NEEMB is a boilerplate that provides a nice starting point for MongoDB, Node.js, Express, and Ember.js based applications which use Brunch.io way. An up-to-date Brunch skeleton for developing clean Ember applications with ease.
It was based on the skeleton from Huafu Gandon brunch-with-ember-and-bootstrap and the skeleton from Giovanni Collazo brunch-with-ember-reloaded but is now much more updated and complex now, tho I'd prefer to keep my original source.
Also
the skeleton from Jeremy Fowler ExpressBrunchJade and the skeleton from Elving Rodriguez brunch-with-hipsters which was used for organizing code of express application on Node.js
- Ember v1.0.0
- Ember Data v1.0.0b2
- Handlebars 1.0.0
- jQuery v2.0.3
- HTML5 Boilerplate v4.2.0
- Twitter Bootstrap v3.0.0
- Font Awesome v3.1.0
- Underscore v1.4.4
- CoffeeScript - a little language that compiles into JavaScript.
- Stylus - Expressive, dynamic, robust CSS pre-processor.
- auto-reload-brunch - Adds automatic browser reloading support to brunch.
- uglify-js-brunch - Adds UglifyJS support to brunch.
- keyword-brunch - Adds Keyword support to brunch to replace some variables in the generated sources.
Download node.js server from http://nodejs.org/
Unarchive sources
Install node.js:
cd <folder with sources>/
make
make install
Create config for install Mongo:
sudo nano /etc/yum.repos.d/mongodb.repo
Write in file
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
Install Mongo:
yum install mongo-10gen mongo-10gen-server
Cloning repository:
git clone [email protected]:denya133/neemb.git <appname>
Install npm modules:
cd <appname>
sudo npm install [email protected] -g
sudo npm install east east-mongo -g
sudo npm install coffee-script -g
sudo npm install cake -g
sudo npm install packer -g
npm install
Start migrations with:
east init #for create migrations folder. If folder exist then it comand not need execute
east migrate
For start server in development environment:
brunch watch -s -p 3000
For create a production release and start server in production environment:
chmod -x start.sh #for set start.sh file executable mod
./start.sh
You can easily create the API documentation fo your project using:
cake gen-doc
The API documentation will be generated in the apidocs
folder. You can change this and other settings in yuidoc.json
.
The Ember Data is already included in the project but you need to activate it in the file app/store.coffee
.
You can easily disable it by prepending vendor/scripts/ember-data.js
with a _
, removing it from the config.coffee
file and commenting out require 'store'
from app/initialize.coffee
.
Ember Bootstrap is adding some helpers to use Twitter Bootstrap elements easy with Ember. It comes with Views accessible as Handlebars template helpers too.
This skeleton makes use of scaffolt generators to help you create common files quicker. To use first install scaffolt globally with npm install -g scaffolt
. Then you can use the following command to generate files.
Generating files of Ember App
scaffolt model <name> → app/models/Name.coffee
=> App.Name = DS.Model.extend
scaffolt view <name> → app/views/Name.coffee
=> App.NameView = Ember.View.extend
scaffolt controller <name> → app/controllers/Name.coffee
=> App.NameController = Ember.Controller.extend
scaffolt objectcontroller <name> → app/controllers/Name.coffee
=> App.NameController = Ember.ObjectController.extend
scaffolt arraycontroller <name> → app/controllers/Names.coffee
=> App.NamesController = Ember.ArrayController.extend
scaffolt route <name> → app/routes/Name.coffee
=> App.NameRoute = Ember.Route.extend
scaffolt template <name> → app/templates/name.hbs
scaffolt component <comp-name> → app/templates/components/comp-name.hbs
→ app/views/components/CompName.coffee
=> App.CompNameComponent = Ember.Component.extend
Generating files of Express App
scaffolt express_route <name> → express/routes/name.coffee
=> exports.name = (options) ->
(req, res) ->
res.render 'name', {options: options}
scaffolt express_view <name> → express/views/name.jade
=> extends layout
block content
// {{name}}
- There's a few more commands you can use with
scaffolt
and also instruction on how to create your own generators, so make sure you check out the docs. - Each generator will automatically add the generated files to the corresponding initializer coffee file so that you won't have to add them yourself.
You can write your tests in the test
folder, just make sure they are named *_test.coffee
. You can customize the test to user PhantomJS, Chrome, Firefox, Safari or Opera on the test/karma.conf.js
file. There's a lot of other settings there as well. Run tests with:
cake test
It needs some work to make it ready with Ember
, and that will probably come in the next major release.
You have some cake
tasks to help you update ember, ember-data and ember-bootstrap. More to come in the future.
# update Ember:
cake update-ember
# update Ember Data:
cake update-ember-data
# update Ember Bootstrap:
cake update-ember-bootstrap
# update Twitter Bootstrap:
cake update-bootstrap
# update Font Awesome:
cake update-font-awesome
# get/update Ember Date:
cake update-ember-date
All of neemb is licensed under the MIT license.
Copyright (c) 2013 Denis Trayzhon
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.