How dhirajmoudgil/nodejs_loginapp works
This is a small Express login application. Users register with account details, the user model hashes passwords and saves accounts to MongoDB, and users can log in through Passport’s local strategy to access the authenticated homepage; logout clears the login session. Express serves the login, registration, and homepage templates, along with static assets. The README is empty, so the map is based on the supplied tree and source excerpts; the registration validation has apparent variable-name inconsistencies, so no validation-to-error-view flow is shown.
Main entry points: routes/users.js User routes · app.js Express app · index.js Homepage route · models/users.js User model
Components 13
Web app
- Express app
app.js - Homepage route
routes/index.js
Authentication
- User routes
routes/users.js - Passport local auth
routes/users.js - Login session
app.js
User data
- User model
models/users.js - MongoDB
User interface
- Login view
views/login.handlebars - Registration view
views/register.handlebars - Homepage view
views/index.handlebars - Shared layout
views/layouts/layout.handlebars - Static assets
public
Other components
- Visitor
Connections 19
- Visitor → Express app: sends requests
- Express app → User routes: mounts /users
- Express app → Homepage route: mounts /
- Express app → Login session: initializes
- Express app → Static assets: serves files
- User routes → Login view: renders login
- User routes → Registration view: renders registration
- User routes → Passport local auth: dispatches login
- Passport local auth → User model: looks up and checks
- User routes → User model: creates account
- User model → MongoDB: reads and writes
- Passport local auth → Login session: serializes user
- Login session → User model: reloads user
- Homepage route → Login session: checks authentication
- Homepage route → User routes: redirects unauthenticated
- Homepage route → Homepage view: renders homepage
- Login view → Shared layout: uses layout
- Registration view → Shared layout: uses layout
- Homepage view → Shared layout: uses layout