app.js
- Application starting pointapp/server/routes.js
- URL(HTTP method) to controller mapping and all file paths of jade files are declaredapp/server/views/
- Contains the view templates for the applicationpublic/js/controllers/homeController.js
- Handles the navigation for major buttonsapp/server/views/modals/
- Alerts in modalsapp/server/modules/
- Contains various module/functional managersapp/server/userImages/
- Contains the user uploaded profile picturesapp/public/
- Contains the js libraries and css dependencies used in the view templatesapp/public/css/style.styl
- Stylus style sheet language that compiles down to cssnode_modules/
- Contains all the downloaded dependent node modulesglobalconfig.js
- Contains all the global level application configurationspackage.json
- Contains the dependency configuration for npm managed node modules
The following databases must be started
-
Redis
$ redis-server
For redis-gui
$ npm install -g redis-commander $ redis-commander
-
MongoDB
$ mongod
-
Neo4j
start the community edition of neo4j
-
Rethinkdb
$ rethinkdb
If you don't want to use moneo library and would like to use the mongoconnector and neo4j docmanager. Here is the procedure,
-
Start the MongoDB with replicate set
$ mongod --replSet myDevReplSet
-
Then, star the mongo shell in terminal
$ mongo $ rs.initiate()
-
Make sure neo4j is started and then, in terminal
$ mongo-connector -m localhost:27017 -t http://localhost:7474/db/data -d neo4j_doc_manager
mongo-connector command is explained here,
-m provides the MongoDB endpoint -t specifies the Neo4j endpoint -d specifies Neo4j Doc Manager as the doc manager
- New User Account Creation
- Secure Password Reset via Email
- Ability to Update / Delete Account
- Session Tracking for Logged-In Users
- Local Cookie Storage for Returning Users
- Blowfish-based Scheme Password Encryption
- Node.js - Application Server
- Express.js - Node.js Web Framework
- Jade - HTML Templating Engine
- Stylus - CSS Preprocessor
- EmailJS - Node.js > SMTP Server Middleware
- Moment.js - Lightweight Date Library
- Twitter Bootstrap - UI Component & Layout Library
NOSQL database | Type | Usage in the project |
---|---|---|
MongoDb | Document store | Storing Author data and blog tags |
Neo4j | Graph database | Recommending blog tags to authors |
Redis | Key Value / Tuple Store | Storing blog data |
Rethinkdb | Document store | Session storage |
-
Go into the project folder.
$ cd project
-
Install the dependencies.
$ npm install -save
-
In a separate shell start the MongoDB daemon, Redis DB, Neo4j DB.
$ mongod $ redis-server start the community edition of neo4j $ rethinkdb
-
From within the node-login directory, start the server.
$ node app
For development use nodemon.
$nodemon app
-
Open a browser window and navigate to: http://localhost:3000
To enable the password retrieval feature it is recommended that you create environment variables for your credentials instead of hard coding them into the email dispatcher module.
To do this on OSX you can simply add them to your .profile or .bashrc file.
export EMAIL_HOST='smtp.gmail.com'
export EMAIL_USER='[email protected]'
export EMAIL_PASS='1234'
- Regarding architecture some thoughts about the app's architecture.