π TaskForge β A Trello-style collaborative task management app with real-time updates, drag-and-drop lists, and persistent cards.
π Live Frontend |
π Backend Swagger Docs
Live Backend: https://taskforge-backend-jjdh.onrender.com
Swagger API Docs: https://taskforge-backend-jjdh.onrender.com/api/docs
TaskForge is a production-ready Trello-style backend built using the MERN stack architecture.
It powers the frontend app by providing APIs for managing boards, lists, cards, members, notifications, and real-time collaboration, all secured with JWT authentication and Socket.io for live updates.
| Layer | Technology |
|---|---|
| Backend Framework | Node.js, Express.js |
| Database | MongoDB (Mongoose ODM) |
| Authentication | JWT (JSON Web Tokens) |
| Real-Time Communication | Socket.io |
| File Storage | Cloudinary |
| Documentation | Swagger UI |
| Security | bcrypt.js, Helmet, CORS |
| Other Tools | Nodemon, dotenv, ESLint |
β
Board Management β Create, edit, and share boards with team members
β
List & Card System β Add lists and drag-and-drop cards within boards
β
User Authentication β JWT-secured login and registration
β
Real-Time Updates β Sync changes instantly via Socket.io
β
Activity Logs β Track card creation, updates, and deletions
β
Notifications System β Real-time board and card updates
β
File Uploads β Cloudinary-based attachment handling
β
Pagination & Search β Optimized endpoints with query filters
β
Dynamic CORS β Auto-switch between dev and prod environments
β
Modular Structure β Cleanly organized controllers, routes & middleware
src/
β£ controllers/ β Route logic (auth, boards, lists, cards, etc.)
β£ models/ β MongoDB schemas (User, Board, Card, etc.)
β£ routes/ β Express routes grouped by feature
β£ middleware/ β JWT protection, error handling
β£ utils/ β Helpers (Cloudinary, pagination)
β£ config/ β Swagger config, DB connection
β£ app.js β Core express configuration (CORS, routes)
β server.js β Socket.io setup and server startup
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/register |
Register new user |
POST |
/api/auth/login |
Login user and return JWT |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/boards |
Fetch all boards |
POST |
/api/boards |
Create new board |
GET |
/api/boards/:id |
Fetch board with lists and cards |
PUT |
/api/boards/:id/members |
Add member to board |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/lists |
Create new list |
PUT |
/api/lists/:id |
Update list title/order |
DELETE |
/api/lists/:id |
Delete list |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/cards |
Create new card |
PUT |
/api/cards/:id |
Update card details |
PATCH |
/api/cards/:id/move |
Move card between lists |
DELETE |
/api/cards/:id |
Delete card |
PUT |
/api/cards/:id/attachments |
Update/remove attachments |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/notifications |
Fetch all notifications |
PUT |
/api/notifications/:id/read |
Mark as read |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/activities/:boardId |
Fetch board activity logs |
git clone https://github.com/Bhupesh-aher/TaskForge-Backend.git
cd TaskForge-Backendnpm installCreate a .env file in the project root:
# Environment
NODE_ENV=development
PORT=5000
# Database
MONGO_URI_DEV=your-local-mongo-uri
MONGO_URI_PROD=your-production-mongo-uri
# JWT Secret
JWT_SECRET=your-jwt-secret
# Cloudinary
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret
# Client URLs
CLIENT_URL_DEV=http://localhost:5173
CLIENT_URL_PROD=https://task-forge-frontend.vercel.appnpm run devRuns with
NODE_ENV=development, connecting to local DB & frontend.
Render automatically sets:
NODE_ENV=productionConnects to hosted DB and live frontend.
| Service | Description |
|---|---|
| Backend Hosting | Render |
| Frontend Hosting | Vercel |
| Database | MongoDB Atlas |
| Media Storage | Cloudinary |
Access all endpoints directly at: π https://taskforge-backend-jjdh.onrender.com/api/docs
- Dynamic environment switching via
NODE_ENV - CORS configured for both local and production
- Socket.io integrated for real-time updates
- Modular structure for easy scaling
MIT License Β© 2025 [Bhupesh Aher]