Skip to content

Latest commit

 

History

History
106 lines (63 loc) · 5.29 KB

overview.md

File metadata and controls

106 lines (63 loc) · 5.29 KB

MEAN (Mongo Express Angular Node) seed

MongoDB, Express.js, AngularJS, Node.js + Yeoman (Grunt, Bower, Yo) + Jasmine, Karma, Protractor

This is project is meant to be a starting point for full stack javascript (Angular + Node) HTML5 websites and mobile apps (cross platform, responsive, can optionally be wrapped with TriggerIO, Phonegap, etc.).

  • It's meant to be:

    • more specific than barebones language specific seeds such as angular-seed so you can start out with core functionality such as user login, sign up, forgot password, etc. out of the box, BUT:
    • broad and modularized enough to be used for a wide variety of applications. Angular and Node are the core technologies and Express, Mongo (using mongodb-native) and Grunt are pretty heavily integrated but all other technologies can be swapped as needed with a little bit of work.
  • mongodb-native is used (rather than mongoose) as the npm plugin for the node-mongoDB interface.

  • See tools-dependencies docs folder for more info / other key technologies used

  • For a full list of dependencies / technologies see below, though many of the non-core ones can be switched out as necessary.

    • frontend: bower.json and app/src/lib
    • backend: package.json and app/modules/services
  • NO jQuery depdendency! (AngularJS is meant to be used with its included jqLite)

Feel free to add Yeoman builds and submit pull requests for other 'cores' (i.e. Mongoose instead of mongo-db-native, SASS instead of LESS, Mocha instead of Jasmine for backend tests, etc.).

Any suggestions for improvement are welcome!

NOTE: if you are NOT using Facebook login, REMOVE the facebook.all.js file that's included in buildfilesModules.json since it's a HUGE (170kb minified!) file and thus a huge waste if you're not using it!

Code standards and expectations

Borrowing from Extreme Programming, Kanban, etc. we believe QUALITY is the most important aspect of code and that high quality code will actually SAVE time and allow FASTER building in the medium to long term by dramatically reducing Quality Assurance (QA) and bug squashing - which can easily take forever and is the most boring and frustrating part of coding!

Therefore, our 6 code quality standards are that all code should be:

  1. Linted
  2. Tested
    1. This is arguably the MOST important part - a robust test suite with continuous integration will automatically ensure the code is as bug free as possible and will allow updates and refactoring without lots of regressions.
  3. Well-documented, clear, and understandable
  4. Maintainable, easy to change and update. Modular.
  5. Performant
  6. Well designed, with good UI, UX, and aesthetics (for frontend code)

Limitations / Compatibility

  • Built to be cross browser and cross platform (mobile, desktop, Windows, Mac, etc.) compatibile so it should work most everywhere. Most robustly tested on Chrome and Firefox.
    • Exceptions - it will NOT work:
      • Internet Explorer <=9. Works on Internet Explorer 10+ (10 is the first version to support flexbox. It can work on IE9 without flexbox use but IE8 and below is iffy..)
    • Tested / should work on:
      • Chrome, Firefox, Safari, Internet Explorer 10+
      • Android 2.3+
      • iOS
      • should work elsewhere too but not rigorously tested outside the ones listed above
    • In total, should be about 85% coverage (IE 9, 8, 7, 6 make up about 15% market share - this number will likely go down with time as more people switch to IE10 and above). See current statistics below; note they vary as these are all (albiet very large) samples from different sites - there is no 'definitive answer' for exact browser share so it will vary by source.

Documentation

API (rpc) documentation and interactive usage

See api-docs.md

YUIDoc auto documentation, generated by grunt

  • Frontend docs are in yuidocs/frontend. View them by opening yuidocs/frontend/index.html with a browser.
  • Backend docs are in yuidocs/backend. View them by opening yuidocs/backend/index.html with a browser.

Testing, Continuous Integration

See testing.md, test-coverage.md and continous-integration.md files

Grunt / build process

See grunt.md

Conventions / Style guide

See conventions-style-guide docs folder

Frameworks, MVC (Model View Controller) and Flow

The app (both backend and frontend) follow MVC but the file structure is modularized (so the view, controller and model are typically in the same folder) as opposed to all the controllers in one folder, all the models in one folder and all the views in one folder as may be more common. The module approach allows for easier adding, editing, and removing of components since everything the module needs is right there in the same folder. Managing dependencies and connecting modules together is easier since things are more separated.

See frontend-angular and backend-node docs folders for more info.

File Structure

See file-structure.md

Common actions

See common-actions.md

Workflow

See workflow.md

Project Files

Configuration

  • see the app/configs folder for all the config.json files and examples. You can create as many configurations as you like and tell grunt which one to use when building your app.
  • see configs.md for more info