Godmode


    ,/
  ,'/
,' /

,' /__, .'_ ,'
/ ,' / ,' /,' /'

GoDmoDe: A generator driven development An application generation framework.

Description


You know what's annoying?

gdd make gdd gem gdd relate

Rewriting a user model for the 10th time, using a combination of copy and paste of old projects or just rewriting the code from memory. As developers I'm convinced that we are not doing enough to automate the code that makes up 80% of functionality for modern web apps. From scheduling, to categories, to social links, to images, to location, there are functionality and interactions that come up again, and again, and again, and again. So let's:

write code to write your code!

Have respect for your time, for your client's money, and for your sanity: automate!

With this in mind, I've created an application generator using a constrained set of tools to enable great interoperability between pieces. The goal is to use interactive command line tools to create models with all of their related parts. For example:

mang gen:user

  • Models: user, role, user_roles
  • Views: Authbox angular.js widget
  • Custom devise controllers
  • Emails sent through sendgrid
  • Admin

mang gen:category

Follow

  • Models: polymorphic Follow model
  • Concerns: Followable
  • Helpers: follow button

GalleryImage

  • Uploaders: carrierwave ImageUploader model
  • Models: polymorphic GalleryImage model
  • Views
    • Form Helper for adding multiple images
    • Fluidbox for viewing galleries
  • Remote storage on S3 using Fog
  • Admin

Address

  • Models: polymorphic Address model
  • Concerns: Addressable
  • Geolocation using Geo
  • rails_admin_geo

Layout

  • flexbox driven css

Social Buttons

Documentation


The Stack

Purpose Gem
Framework rails
Database pg
User Auth devise, cancan
Views angular.js, zurb foundation 5
Controllers decent_exposure
Models squeel, pacecar
Administration rails_admin
Image Manipulation carrierwave, fog
Categories awesome_nested_set
SMTP Sendgrid
Geolocation geo
Testing rspec
Debugging jazz_hands, better_errors, quiet_assets

Usage


mang new:project_name

mang init

Will install missing gems

mang scaffold:model_name

Installation


$ gem install mang