How dharam-k/node-js-crud-api-with-jwt-auth works
This is an Express user-authentication API. Clients register or log in, request an email reset link, reset a password, and access a protected logged-in-user endpoint. The controller owns the domain actions: it hashes passwords, issues and verifies JWTs, reads and updates users, and sends reset email. The app connects Mongoose directly; the separate DB connector is not invoked in the sampled app. The graph reflects documented features, with unsampled behavior grouped under its exact directory; no unsupported reset-page or logout flow is inferred.
Main entry points: UserController.js User controller · Users.js User model · app.js Express app · UserRoutes.js User routes
Components 14
API runtime
- Express app
app.js - User routes
routes/UserRoutes.js - JWT middleware
middleware/AuthMiddleware.js
Authentication workflows
- User controller
controllers/UserController.js - Sign up
controllers/UserController.js - Login
controllers/UserController.js - Forgot password
controllers/UserController.js - Password reset
controllers/UserController.js - Logged-in user
controllers/UserController.js
Persistence and email
- User model
models/Users.js - MongoDB
- Email transport
config/Email.js - SMTP service
Other components
- API client
Connections 19
- API client → Express app: sends requests
- Express app → User routes: mounts routes
- User routes → User controller: dispatches actions
- User routes → JWT middleware: guards logged route
- JWT middleware → User model: loads user
- JWT middleware → Logged-in user: continues request
- User controller → Sign up: handles signup
- User controller → Login: handles login
- User controller → Forgot password: handles request
- User controller → Password reset: handles reset
- User controller → Logged-in user: returns user
- Sign up → User model: creates user
- Login → User model: finds user
- Forgot password → User model: finds user
- Forgot password → Email transport: sends reset email
- Email transport → SMTP service: delivers email
- Password reset → User model: updates password
- User model → MongoDB: reads and writes
- Express app → MongoDB: connects Mongoose