diff --git a/README.md b/README.md index 05f993c7a1..6f3f8c6184 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Alt](https://lh4.googleusercontent.com/-PVw-ZUM9vV8/UuWeH51os0I/AAAAAAAAD6M/0Ikg7viJftQ/w1286-h566-no/hackathon-starter-logo.jpg) -Hackathon Starter +Hackathon Starter [![Dependency Status](https://david-dm.org/sahat/hackathon-starter.png?theme=shields.io)](https://david-dm.org/sahat/hackathon-starter) ================= A kickstarter for **Node.js** web applications. @@ -31,7 +31,7 @@ Features -------- - **Local Authentication** using Email and Password - **OAuth 2.0 Authentication** via Twitter, Facebook, Google or GitHub -- Error and Success flash notifications +- Sweet Error and Success flash notifications with animations by *animate.css* - MVC Project Structure - LESS stylesheets (auto-compiled via Express middleware) - Bootstrap 3 + Flat UI + iOS7 Theme @@ -39,7 +39,7 @@ Features - **Account Management** - Profile Details - Change Password - - Link OAuth 2.0 strategies + - Link multipleOAuth 2.0 strategies to one account - Delete Account - **API Examples**: Facebook, Foursquare, Last.fm, Tumblr, Twitter, and more. @@ -52,6 +52,7 @@ Prerequisites **Note**: If you are new to Node.js or Express framework, I highly recommend watching [Node.js and Express 101](http://www.youtube.com/watch?v=BN0JlMZCtNU) screencast that teaches Node and Express from scratch. + Getting Started --------------- @@ -75,7 +76,7 @@ node app.js > **Note**: I strongly recommend installing nodemon `sudo npm install -g nodemon`. > It will monitor for any changes in your node.js > application and automatically restart the server. Once installed, instead of `node app.js` use `nodemon app.js`. -> It's a big time saver in the long run. +> It is a big time saver in the long run. Next up, if you want to use any of the APIs or OAuth2 authentication methods, you will need to obtain appropriate credentials: Client ID, Client Secret, API Key, or Username & Password. You will @@ -111,6 +112,29 @@ Obtaining API Keys *TODO: Add Twitter and GitHub instructions.* +Project Structure +----------------- + +| Name | Description | +| ------------- |:-------------:| +| **config**/passport.js | Passport Local and OAuth strategies + Passport middleware. | +| **config**/secrets.js | Your API keys, tokens, passwords and database URL. | +| **controllers**/api.js | Controller for /api route and all api examples. | +| **controllers**/contact.js | Controller for contact form. | +| **controllers**/home.js | Controller for home page (index). +| **controllers**/user.js | Controller for user account management page. | +| **models**/User.js | Mongoose schema and model for User. | +| **public/*** | Static assets, i.e. fonts, css, js, img. | +| **views/account** | Templates relating to user account. | +| **views/api** | Templates relating to API Examples. | +| **views**/layout.jade | Base template. | +| **views**/home.jade | Home page template. | + + +**Note:** There is no difference how you name or structure your views. You could place all your templates in a top-level `views` directory without having a nested folder structure, if that makes things easier for you. Just don't forget to update `extends ../layout` and corresponding `res.render()` method in controllers. For smaller apps, I find having a flat folder structure to be easier to work with. + +**Note 2:** Although your main template - **layout.jade** only knows about `/css/styles.css` file, you should be editing **styles.less** stylesheet. Express will automatically generate **styles.css** whenever there are changes in LESS file. This is done via [less-middleware](https://github.com/emberfeather/less.js-middleware) node.js library. + Useful Tools ------------ [HTML to Jade converter](http://html2jade.aaron-powell.com) @@ -151,6 +175,7 @@ TODO ---- - Pages that require login, should automatically redirect to last attempted URL on successful sign-in. - Add more API examples. +- Mocha tests. Contributing ------------ @@ -166,4 +191,4 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of 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. \ No newline at end of file +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. diff --git a/package.json b/package.json index b8537c70ed..13a2e656b2 100755 --- a/package.json +++ b/package.json @@ -2,31 +2,30 @@ "name": "hackathon-starter", "version": "0.0.0", "dependencies": { - "async": "*", - "bcrypt": "*", - "cheerio": "*", - "connect-flash": "*", - "express": "*", - "express-validator": "*", - "less-middleware": "*", - "request": "*", - "jade": "*", - "mongoose": "*", - "underscore": "*", - "passport": "*", - "passport-oauth": "*", - "passport-local": "*", - "passport-github": "*", - "passport-facebook": "*", - "passport-twitter": "*", - "passport-google-oauth": "*", - - "lastfm": "*", - "github-api": "*", - "sendgrid": "*", - "tumblr.js": "*", - "twit": "*", - "fbgraph": "*", - "node-foursquare": "*" + "async": "~0.2.10", + "bcrypt": "~0.7.7", + "cheerio": "~0.13.1", + "connect-flash": "~0.1.1", + "express": "~3.4.8", + "express-validator": "~1.0.1", + "fbgraph": "~0.2.8", + "github-api": "~0.7.0", + "jade": "~1.1.5", + "lastfm": "~0.9.0", + "less-middleware": "~0.1.15", + "mongoose": "~3.8.5", + "node-foursquare": "~0.2.0", + "passport": "~0.2.0", + "passport-facebook": "~1.0.2", + "passport-github": "~0.1.5", + "passport-google-oauth": "~0.1.5", + "passport-local": "~0.1.6", + "passport-oauth": "~1.0.0", + "passport-twitter": "~1.0.2", + "request": "~2.33.0", + "sendgrid": "~0.4.6", + "tumblr.js": "~0.0.4", + "twit": "~1.1.12", + "underscore": "~1.5.2" } }