snodgrass23 / base12 Goto Github PK
View Code? Open in Web Editor NEW12factor.net web application boilerplate for node.js built on express.js
12factor.net web application boilerplate for node.js built on express.js
Either as a standalone lib, or as a pull request into Connect or Express, ala:
http://developer.yahoo.com/performance/rules.html#expires
Perhaps with an API like this?
app.use(connect_expires(0)) // expires immediately
app.use(connect_expires(1000 * 60 * 60 * 24 * 7)) // expires one week after last access
app.use(connect_expires(new Date('24 august 2014')) // expires on a specific date
...where subsequent calls would just override old calls, so that you could do:
app.use(connect_expires(0)); // markup expires immediately
app.use(express.router);
app.use(connect_expires(1000 * 60 * 60 * 24 * 30)); // static files expire in a month
app.use(express.static(__dirname + '/public'));
Considering an API like this -
routes.js:
var ac = app.controllers;
app.resource('projects', ac.project, function() {
this.resource('pages', ac.page, function() {
this.resource('comments', ac.comment);
});
this.resource('reviews', ac.review);
})
.map('stats', ac.project.stats)
.map('collaborators', ac.project.collaborators);
also add functionality to module to handle things:
When I run node cycle
and make a change to the controller. That change is not reflected in the view.
Not sure about the best API for this, consider these:
routes.js:
app.resource('users');
view.jade:
resource_uri('users', 'create');
resource_url('users', 'show', 'uuid')
or maybe, since app
is already injected into the view:
app.controllers.users.create.url()
app.controllers.users.show.url('uuid')
app.controllers.users.url() // generic "/users" so you can concat custom routes to the end
...that watches files (but not /public files) and runs build.js then run.js on changes.
$ npm run-script generate
available generate scripts:
- twitter-bootstrap
- html5bp
- resource resourcename(property, list) with (plugin, list)
I believe base12 would be a much more useful module without having things like mongoose and redis as default options. What if someone decided to go with a Postgres database? Removing nib is also a potential. We should provide the option to use these packages easily as we use them the most, but not assume they'll be used for everything.
Side note: bcrypt
is required twice in package.json
@ two different versions.
eg:
npm run-script generate twitter-bootstrap
npm run-script generate html5bp
and more complex stuff like:
npm run-script generate auth-passport
-> creates /app/middleware/authentication.js (providing user middlewhere like .must_be_user())
-> creates /app/lib/authentication.js (configuration for auth mechanisms)
-> outputs:
you should add
var authentication = require('./lib/authentication')
to app/index.js and then add authentication to your app's 'init' array.
Then, you should use the methods in middleware/authentication wherever you would like to authenticate your controller actions. For example:
app.post('/messages', app.middleware.authentication.must_be_user, app.controllers.message.create);
Implement grunt build scripts to handle things like JS minification or even things like s3 deployments.
Maybe I'm missing something, but I can't find what license base12 is released under
click register button without filling in any fields.
copy functionality over from Client Dashboard
should this use nimbus.json file, or should we update nimbus to use a separate remote config that could be used for this process as well?
Getting errors left and right trying to do npm install lately. This worked fine a couple weeks ago, but the last few times I've tried installing it (once on a centos box, several times on OSX - Lion) I've been getting errors like this:
npm ERR! error installing [email protected]
npm http GET http://registry.npmjs.org/mkdirp/0.3.0
npm ERR! error installing [email protected]
npm ERR! Error: ENOENT, no such file or directory '/Users/pvencill/.nvm/v0.6.9/lib/node_modules/base12/node_modules/___connect.npm/package/lib/public/icons/page_white_find.png'
npm ERR! You may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]
npm ERR!
npm ERR! System Darwin 11.4.0
npm ERR! command "node" "/Users/pvencill/.nvm/v0.6.9/bin/npm" "install" "-g" "base12"
npm ERR! cwd /Users/pvencill/workspace
npm ERR! node -v v0.6.9
npm ERR! npm -v 1.1.0-3
npm ERR! path /Users/pvencill/.nvm/v0.6.9/lib/node_modules/base12/node_modules/___connect.npm/package/lib/public/icons/page_white_find.png
npm ERR! fstream_path /Users/pvencill/.nvm/v0.6.9/lib/node_modules/base12/node_modules/___connect.npm/package/lib/public/icons/page_white_find.png
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! message ENOENT, no such file or directory '/Users/pvencill/.nvm/v0.6.9/lib/node_modules/base12/node_modules/___connect.npm/package/lib/public/icons/page_white_find.png'
npm ERR! errno {}
npm ERR! fstream_stack Object.oncomplete (/Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/node_modules/fstream/lib/writer.js:204:26)
npm ERR! error rolling back [email protected] Error: UNKNOWN, unknown error '/Users/pvencill/.nvm/v0.6.9/lib/node_modules/base12/node_modules/express/node_modules/___mkdirp.npm/package/examples'
npm ERR! Error: failed to fetch from registry: commander/0.6.1
npm ERR! at /Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:139:12
npm ERR! at cb (/Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:32:9)
npm ERR! at Request._callback (/Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:137:18)
npm ERR! at Request.callback (/Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/node_modules/request/main.js:109:22)
npm ERR! at Request. (/Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/node_modules/request/main.js:198:58)
npm ERR! at Request.emit (events.js:88:20)
npm ERR! at ClientRequest. (/Users/pvencill/.nvm/v0.6.9/lib/node_modules/npm/node_modules/request/main.js:195:10)
npm ERR! at ClientRequest.emit (events.js:67:17)
npm ERR! at Socket. (http.js:1134:11)
npm ERR! at Socket.emit (events.js:67:17)
npm ERR! You may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]
npm ERR!
npm ERR! System Darwin 11.4.0
npm ERR! command "node" "/Users/pvencill/.nvm/v0.6.9/bin/npm" "install" "-g" "base12"
npm ERR! cwd /Users/pvencill/workspace
npm ERR! node -v v0.6.9
npm ERR! npm -v 1.1.0-3
npm ERR! message failed to fetch from registry: commander/0.6.1
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/pvencill/workspace/npm-debug.log
npm not ok
I've tried several versions of node to see if maybe it was a version problem, but have not had different results.
I have to run base12 command as sudo to get things to work properly and even when they do everything is owned by root.
This line needs to be changed to mongoose instead of mongo...
mongoose.connect('mongodb://' + app.config.mongo.host + '/' + app.config.mongo.db, function(err)
I have an app built with a previous minor release of base12 (my package.json is asking for 0.3.x), but this time when I ran an update of all my modules, I apparently pulled a new version which errors on run b/c it's missing a nimbus.json file.
Looking at the nimbus project, it looks like something I don't need to bother with, so why does the base12 app care if I am using it or not?
Further, if I do want to correct my error, what's the nimbus.json file need to have to work? Can't find docs on that either.
...on server start to see if their key (mongoose: { ... }) is present. If not, they should throw an error that says they need config info. This will quickly alert team members when new required config is not present.
Possibly using ender?
For example the "components/user/public/" contents are not accessible when the view references them. I am adding BackboneJS widgets to each component and would like to keep the static files like .js separate without the need of recreating them in the main public folder.
I want to debug, but trying to run node --debug run / cycle results in:
Failed to open socket on port 5858, waiting 1000 ms before retrying
Failed to open socket on port 5858, waiting 1000 ms before retrying
Failed to open socket on port 5858, waiting 1000 ms before retrying
Is there an alternative for debugging?
changing the port number in this file doesnt seem to load into the server
Expected Result: Server runs on changed port number
Actual Result: Sever runs on defualt port 3000
Notes: also I tryed changing the env/defualt.env.js in the root base12 dir with the same results
In package.json, the version of base12 should be locked:
"base12":"0.2.0" <-- or whatever
...so that it expects the same directory structure and API that the cloned template is using. Otherwise, you can clone a project with "base12":"latest" and a breaking change in a new version of base12 can screw up the project on npm install.
Needs to automatically run this:
git config core.ignorecase false
Because otherwise deployment from OSX -> Linux can be a real pain in the ass.
allow component to have templates and also allow it to send mail directly or through sendgrid on heroku environment
Works when you test it with an absolute path locally, but once it's installed base12 to /usr/local/bin/base12, the $dir stuff breaks since it's looking in /usr/local/scripts to find the scripts that of course aren't there (eg 'new' and 'generate').
Looking into a way to get the right $dir after npm install.
$ npm run-script generate resource user(name, email) with (password, timestamp)
would use /scripts/generate/templates/* to...
-> create /app/models/user.js
-> create /app/controllers/user.js
-> create /test/models.user.test.js
-> output to the terminal:
To access your new user resource, add this to your routes file:
app.resource('users', app.controllers.user);
(or something like this)
Update lib/config-load to also check for environment variables for local config. This will help with deployment to cloud services like Heroku.
...that watches files (but not /public files) and runs build.js then run.js on changes.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.