A complete full-stack task management platform with JWT authentication, role-based access control, task CRUD operations, Swagger docs, and a polished responsive UI.
| Layer | Technology |
|---|---|
| Node.js, Express.js | |
| React, Vite, Tailwind CSS | |
| MongoDB, Mongoose | |
| JWT, bcryptjs | |
| Swagger UI, swagger-jsdoc |
# Install dependencies
cd backend
npm install
# Configure environment
copy .env.example .env
# Start development server
npm run dev
# Seed demo data
npm run seed# In a second terminal
cd frontend
npm install
npm run dev| Variable | Description | Example |
|---|---|---|
PORT |
Express server port | 5000 |
MONGO_URI |
MongoDB connection string | mongodb://localhost:27017/intern_db |
JWT_SECRET |
JWT signing secret | your_super_secret_key |
JWT_EXPIRES_IN |
JWT expiration duration | 7d |
NODE_ENV |
Runtime environment | development |
Base URL: http://localhost:5000/api/v1
| Method | Endpoint | Auth | Description |
|---|---|---|---|
/auth/register |
— | Register a new user | |
/auth/login |
— | Login and receive JWT | |
/auth/me |
Required | Fetch authenticated user |
Run
npm run seedafter connecting MongoDB to populate these accounts and five sample tasks.
| Role | Password | |
|---|---|---|
| Admin | admin@admin.com |
admin123 |
| User | test@test.com |
test123 |
Swagger UI: http://localhost:5000/api/docs
Postman: Import postman_collection.json — includes environment variables, folder organization, and sample requests for auth, tasks, and admin endpoints.
The backend can be placed behind an Nginx reverse proxy or cloud load balancer for horizontal scaling, zero-downtime deployments, and improved throughput.
Redis is a natural next step for caching frequently accessed data, auth metadata, and rate-limit state — reducing repeated reads against MongoDB.
MongoDB Atlas with replica sets provides high availability, automated backups, and a seamless path from local development to a production-managed cluster.
Docker & Docker Compose can package all services into reproducible containers. As the product grows, the monolith can be split into dedicated Auth, Task, and Notification services. Rate limiting and input validation are already in place as the baseline security layer for that path.