This repository contains the backend API for Project Camp, a collaborative project management system built with Node.js, Express, and MongoDB.
- User registration, login, JWT-based authentication
- Email verification, password reset, refresh tokens
- Role-based authorization (Admin, Project Admin, Member)
- Project management (create, list, update, delete)
- Team member management within projects
- Task and subtask management, including file attachments
- Project notes (CRUD)
- Healthcheck endpoint
- Data validation, error handling, and response formatting
package.json
PRD.md
README.md
src/
app.js # Express application setup
index.js # Server entry point
db/ # MongoDB connection
controllers/ # Route handlers
middlewares/ # Custom middleware (auth, validation, multer)
models/ # Mongoose schemas
routes/ # Express routers for each area
utils/ # Helpers (ApiError, ApiResponse, mail)
validators/ # express-validator rules
public/ # Static files & uploads
-
Install dependencies
npm install
-
Environment variables Create a
.envfile in the project root with the following (example):PORT=3000 MONGO_URI=mongodb://localhost:27017/projectcamp ACCESS_TOKEN_SECRET=your_secret REFRESH_TOKEN_SECRET=another_secret FORGOT_PASSWORD_REDIRECT_URL=http://localhost:3000/reset-password CORS_ORIGIN=http://localhost:5173
-
Start the server
node src/index.js # or use nodemon if installed -
API base URL
http://localhost:3000/api/v1
POST /register– create accountPOST /login– authenticatePOST /logout– clear tokensGET /current-user– get profilePOST /change-passwordPOST /refresh-tokenGET /verify-email/:tokenPOST /forgot-passwordPOST /reset-password/:tokenPOST /resend-email-verification
GET /– list user projectsPOST /– create projectGET /:projectId– project detailsPUT /:projectId– update (Admin only)DELETE /:projectId– delete (Admin only)- Member routes under
/projects/:projectId/members
GET /:projectId– list tasksPOST /:projectId– create taskGET /:projectId/t/:taskId– task detailsPUT /:projectId/t/:taskId– update taskDELETE /:projectId/t/:taskId– delete task- Subtasks under
/tasks/:projectId/t/:taskId/subtasksand/tasks/:projectId/st/:subTaskId
GET /:projectId– list notesPOST /:projectId– create note (Admin only)GET /:projectId/n/:noteId– note detailsPUT /:projectId/n/:noteId– update note (Admin only)DELETE /:projectId/n/:noteId– delete note (Admin only)
GET /healthcheck– server status
- Node.js & Express
- MongoDB via Mongoose
- express-validator for input validation
- Multer for file uploads
- JWT for authentication
- Nodemailer (via utils/mail) for emails
Use Postman or similar to hit the endpoints. A sample collection should include:
- Auth folder (register, login, etc.)
- Projects folder with member operations
- Tasks folder with subtasks and attachments
- Notes folder
MIT License.
Feel free to fork and extend!