A full-stack organizational project management platform for managing projects, estimations, assignments, tasks, time logs, performance tracking, delivery status, and analytical reports.
- Overview
- Why This Project?
- Key Features
- System Workflow
- Screenshots
- Technology Stack
- Folder Structure
- Database Collections / Schema Summary
- Application Architecture
- Authentication Flow
- Performance Formula Explanation
- Installation Guide
- Environment Variables
- Running the Project
- API Overview
- Validation Rules
- Security Features
- Reports & Analytics
- Future Enhancements
- Author
- License
- Support / Star Repository
Organizational Project Management System is a MERN-based web application designed to support project planning, team allocation, task execution, time tracking, performance monitoring, delivery review, and reporting from one centralized dashboard.
The application includes a React frontend with protected pages and an Express.js backend connected to MongoDB through Mongoose. JWT authentication is used for secured API access, and the frontend consumes backend services through Axios.
Organizations often need a clear view of project budgets, estimated hours, assigned team members, task progress, delivery status, and delays. This project brings those operational workflows into a single system so teams can:
| Need | How the System Helps |
|---|---|
| Project visibility | Tracks projects, status, budget, hours, and recent activity |
| Work allocation | Assigns members to projects with hour limits |
| Task control | Connects tasks to project assignments and monitors progress |
| Time tracking | Logs work hours against tasks and updates used hours |
| Performance review | Calculates score, completion percentage, and delay impact |
| Reporting | Provides project summary, member performance, and lag attribution reports |
| Module | Available Capabilities |
|---|---|
| ๐ Authentication | Register, login, JWT token generation, protected frontend routes |
| ๐ Dashboard | Project, member, task, completed task, active project, allocated hour, and used hour statistics |
| ๐ Project Management | Create, view, update, delete, and track projects |
| ๐ฐ Estimation | Create estimations, update estimations, approve estimations, reject estimations |
| ๐ฅ Team Members | Add, view, and delete team members |
| ๐งฉ Project Assignment | Assign members to projects, allocate hours, prevent duplicate assignments |
| โ Task Management | Create, view, update, delete, prioritize, and track task progress |
| โฑ๏ธ Time Logging | Log task hours, update task logged hours, update assignment hours used |
| ๐ Performance Tracker | View member score, task completion, used hours, remaining hours, and breach count |
| ๐ฆ Project Delivery | View project delivery dashboard data |
| ๐จ Breach Logs | View automatically recorded task deadline breaches |
| ๐ธ Closure Snapshots | View project closure snapshot records |
| ๐ Reports & Analytics | Project summary, member performance, lag attribution, PDF export, CSV export |
| ๐ค Profile | View profile, update profile, and change password |
| โ๏ธ Settings | Frontend settings page |
User Registration
โ
User Login
โ
JWT Stored on Client
โ
Create Project
โ
Create / Review Estimation
โ
Assign Team Members
โ
Create Project Tasks
โ
Log Working Hours
โ
Track Progress and Breaches
โ
Review Performance
โ
Project Delivery / Closure Snapshot
โ
Reports and Analytics
Screenshots are stored in the
Screenshotsfolder.
| Dashboard | Projects |
|---|---|
![]() |
![]() |
| Assignment | Team Members |
|---|---|
![]() |
![]() |
| Project Delivery | Reports |
|---|---|
![]() |
![]() |
Organizational Project Management/
โโโ backend/
โ โโโ config/
โ โ โโโ database.js
โ โโโ controllers/
โ โโโ middleware/
โ โ โโโ authMiddleware.js
โ โโโ models/
โ โโโ routes/
โ โโโ validations/
โ โโโ app.js
โ โโโ server.js
โ โโโ package.json
โโโ frontend/
โ โโโ public/
โ โโโ src/
โ โ โโโ api/
โ โ โโโ assets/
โ โ โโโ components/
โ โ โโโ layouts/
โ โ โโโ pages/
โ โ โโโ styles/
โ โ โโโ App.jsx
โ โ โโโ main.jsx
โ โโโ index.html
โ โโโ vite.config.js
โ โโโ package.json
โโโ Screenshots/
โโโ docs/
โโโ package.json
โโโ README.md
| Collection | Main Fields | Purpose |
|---|---|---|
users |
name, email, password, role |
Stores registered users and authentication roles |
projects |
projectId, name, client, type, priority, scope, totalHours, budget, startDate, endDate, status |
Stores project planning and budget details |
estimations |
projectId, estimatedHours, hourlyRate, quotedPrice, approvalStatus |
Stores project estimation and approval state |
teammembers |
name, email, role, department, status |
Stores team member profiles |
projectassignments |
projectId, memberId, role, allocatedHours, hoursUsed, status, startDate |
Maps team members to projects |
tasks |
projectId, assignmentId, assignedTo, title, description, estimatedHours, loggedHours, progress, deadline, priority, status, completedAt |
Stores assigned project tasks |
timelogs |
taskId, memberId, date, hoursLogged, notes |
Records work hours against tasks |
performancerecords |
memberId, projectId, score, statusTag |
Stores performance score records |
projectdeliveries |
projectId, deliveryDate, mode, clientSignoff, notes, status |
Stores delivery review information |
breachlogs |
taskId, memberId, originalDeadline, revisedDeadline, reason |
Tracks task deadline breaches |
closuresnapshots |
projectId, totalBudget, estimatedHours, usedHours, completedTasks, totalTasks, remarks |
Stores project closure summaries |
React + Vite Frontend
โ
Axios API Layer
โ
Express.js Routes
โ
Controllers
โ
Mongoose Models
โ
MongoDB Database
| Layer | Responsibility |
|---|---|
| Frontend pages | Screens for dashboard, projects, estimation, members, assignments, tasks, reports, profile, and settings |
| Components | Reusable UI such as modals, tables, cards, navbar, sidebar, loaders, and protected routes |
| API layer | Axios service modules for backend endpoints |
| Routes | Express route definitions under /api |
| Controllers | Request handling, business logic, validation checks, and response formatting |
| Models | Mongoose schemas and collection relationships |
| Middleware | JWT token verification for protected backend routes |
Register or Login
โ
Backend validates user credentials
โ
Password is hashed / compared with bcryptjs
โ
JWT is generated on successful login
โ
Frontend stores token and user data in localStorage
โ
Axios attaches token as Authorization: Bearer <token>
โ
Protected backend routes verify token using JWT middleware
โ
Invalid or expired tokens redirect the user to login
| Area | Current Implementation |
|---|---|
| Registration | POST /api/auth/register |
| Login | POST /api/auth/login |
| Token expiry | 1d |
| Password hashing | bcryptjs with salt rounds set to 10 |
| Protected frontend pages | ProtectedRoute checks token and user in localStorage |
| Protected API routes | Most project, assignment, task, time log, report, profile, performance, breach, delivery, and closure routes use authMiddleware |
The performance module calculates a member-level score using assignments, tasks, and breach logs.
score = 100 - (breaches ร 10) - (incompleteTasks ร 5) + (completedTasks ร 2)
The calculated score is clamped between 0 and 100.
| Score Range | Status |
|---|---|
90 - 100 |
Excellent |
70 - 89 |
Good |
50 - 69 |
Average |
0 - 49 |
Critical |
Additional displayed metrics include:
- Allocated hours
- Used hours
- Remaining hours
- Total tasks
- Completed tasks
- Completion percentage
- Breach count
git clone https://github.com/svk-vasanthkumar/Organizational-Project-Management.git
cd Organizational-Project-Managementcd backend
npm installcd ../frontend
npm installCreate a .env file inside the backend folder.
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key| Variable | Required | Description |
|---|---|---|
PORT |
No | Backend server port. Defaults to 5000 when not provided |
MONGO_URI |
Yes | MongoDB connection string used by Mongoose |
JWT_SECRET |
Yes | Secret key used to sign and verify JWT tokens |
cd backend
npm run devBackend runs at:
http://localhost:5000
cd frontend
npm run devThe Vite development server will display the local frontend URL in the terminal.
cd frontend
npm run buildBase URL:
http://localhost:5000/api
| Module | Method and Endpoint | Protection | Purpose |
|---|---|---|---|
| Auth | POST /auth/register |
Public | Register a user |
| Auth | POST /auth/login |
Public | Login and receive JWT |
| Auth | GET /auth/test |
Public | Test auth route |
| Dashboard | GET /dashboard |
Public in current backend | Fetch dashboard statistics |
| Projects | POST /projects |
JWT | Create project |
| Projects | GET /projects |
JWT | Get all projects |
| Projects | GET /projects/:id |
JWT | Get project by ID |
| Projects | PUT /projects/:id |
JWT | Update project |
| Projects | DELETE /projects/:id |
JWT | Delete project |
| Estimations | POST /estimations |
Public in current backend | Create estimation |
| Estimations | GET /estimations |
Public in current backend | Get estimations |
| Estimations | PUT /estimations/:id |
Public in current backend | Update estimation |
| Estimations | DELETE /estimations/:id |
Public in current backend | Delete estimation |
| Estimations | PUT /estimations/:id/approve |
Public in current backend | Approve estimation |
| Estimations | PUT /estimations/:id/reject |
Public in current backend | Reject estimation |
| Team Members | POST /team-members |
JWT | Add team member |
| Team Members | GET /team-members |
JWT | Get team members |
| Team Members | DELETE /team-members/:id |
JWT | Delete team member |
| Assignments | POST /assignments |
JWT | Create assignment |
| Assignments | GET /assignments |
JWT | Get assignments |
| Assignments | GET /assignments/project/:projectId |
JWT | Get assignments by project |
| Assignments | PUT /assignments/:id |
JWT | Update assignment |
| Assignments | DELETE /assignments/:id |
JWT | Delete assignment |
| Tasks | POST /tasks |
JWT | Create task |
| Tasks | GET /tasks |
JWT | Get tasks |
| Tasks | PUT /tasks/:id |
JWT | Update task |
| Tasks | DELETE /tasks/:id |
JWT | Delete task |
| Time Logs | POST /time-logs |
JWT | Create time log |
| Time Logs | GET /time-logs |
JWT | Get time logs |
| Performance | GET /performance |
JWT | Get performance analytics |
| Project Delivery | GET /project-delivery |
JWT | Get project delivery data |
| Breach Logs | GET /breach-logs |
JWT | Get breach logs |
| Closure Snapshots | GET /closure-snapshots |
JWT | Get closure snapshots |
| Reports | GET /reports/project-summary |
JWT | Get project summary report |
| Reports | GET /reports/member-performance |
JWT | Get member performance report |
| Reports | GET /reports/lag-attribution |
JWT | Get lag attribution report |
| Users | GET /users/profile |
JWT | Get current profile |
| Users | PUT /users/profile |
JWT | Update current profile |
| Users | PUT /users/change-password |
JWT | Change password |
| Area | Validation / Rule |
|---|---|
| User email | Must be unique in the users collection |
| User role | Limited to Admin, Project Manager, or Team Member |
| Project priority | Limited to Low, Medium, or High |
| Project assignment | Prevents assigning the same member to the same project more than once |
| Assignment hours | Total allocated hours cannot exceed the project totalHours |
| Assignment update | Changing project or team member on an existing assignment is restricted |
| Assignment deletion | Assignment cannot be deleted when the member has active tasks in that project |
| Task creation | Task must reference a valid assignment |
| Task assignment match | Task project and assigned member must match the selected assignment |
| Task hours | Total task estimated hours cannot exceed assignment allocated hours |
| Task progress | Must be between 0 and 100 |
| Task status | Limited to Not Started, In Progress, Review, Completed, or Blocked |
| Task priority | Limited to Low, Medium, or High |
| Time logs | Require task, member, date, and logged hours |
| Project delivery mode | Limited to Online, Offline, or Hybrid |
| Project delivery status | Limited to In Review, Delivered, or Closed |
| Estimation status | Limited to Draft, Under Review, Approved, or Rejected |
- Password hashing with
bcryptjs - JWT-based authentication
- Bearer token verification middleware
- Axios request interceptor for automatic token attachment
- Axios response interceptor for
401logout handling - Protected frontend routes using
ProtectedRoute - Password field excluded from profile API response
- MongoDB unique constraints for users, team members, and project assignment pairs
| Report | Description |
|---|---|
| Project Summary Report | Shows budget, estimated hours, allocated hours, used hours, completed tasks, and total tasks per project |
| Member Performance Report | Shows allocated hours, used hours, completed tasks, total tasks, calculated score, and status |
| Lag Attribution Report | Shows breach logs with task and member references |
| Performance Export | The performance page supports PDF and CSV export |
Reports are available from the frontend reports pages and protected backend report endpoints.
Planned improvement ideas for future versions:
- Role-based API authorization for Admin, Project Manager, and Team Member permissions
- Create and update endpoints for project delivery records from the backend
- Create endpoint support for closure snapshots from the backend
- Team member update endpoint alignment with the frontend API wrapper
- Email notifications for deadline breaches and delivery updates
- Calendar or timeline view for deadlines
- Dark mode preference persistence
- Expanded automated test coverage
Vasanthkumar S
| Profile | Details |
|---|---|
| Name | Vasanthkumar S |
| Project | Organizational Project Management System |
| Repository | Organizational-Project-Management |
This project currently uses the ISC License as defined in the backend package metadata.
If this project helped you or you found it useful, please consider giving it a star.





