Team Task Manager is a full-stack collaboration and project management application with backend-enforced role-based access control, project membership, task assignment, progress tracking, and dashboard reporting.
Built with React, Node.js, Express, PostgreSQL, Prisma, JWT authentication, Render, and Supabase.
- π Live App: https://team-task-manager-fullstack-bcji.onrender.com
- π GitHub Repository: https://github.com/SintuMishra/team-task-manager-fullstack
- π₯ Demo Video: https://drive.google.com/file/d/1SIiEe_wTVQSiPvzwr-ai6PXUh2nTZ6lf/view?usp=sharing
Team Task Manager provides a structured workspace for managing projects, team members, tasks, priorities, due dates, and project progress.
The application focuses on backend authorization and data integrity rather than frontend-only restrictions. Access to projects and tasks is validated on the server, with permissions enforced for administrators, project members, and task assignees.
This project focuses on backend correctness and real-world system design rather than just UI.
Key considerations:
- Enforcing role-based access control at the backend level
- Designing proper relationships between users, projects, and tasks
- Ensuring predictable API responses and validation
- Handling edge cases such as empty dashboards and unauthorized access
-
User signup, login, logout, and session handling
-
JWT-based authentication with bcrypt password hashing
-
Backend-enforced RBAC for
ADMINandMEMBERroles -
Project creation, editing, and deletion (Admin only)
-
Project member management via email
-
Task creation, assignment, editing, and deletion
-
Task status updates by assigned members
-
Dashboard with:
- Total projects and tasks
- Task status breakdown
- Overdue task tracking
- Recent tasks and project progress
-
Search and filtering for projects and tasks
-
Responsive UI (desktop, tablet, mobile)
-
Render deployment with health checks
| Capability | Admin | Member |
|---|---|---|
| View dashboard | Yes | Yes |
| View accessible projects | Yes | Yes |
| Create projects | Yes | No |
| Edit/delete managed projects | Yes | No |
| Add/remove project members | Yes | No |
| Create and assign tasks | Yes | No |
| Edit/delete managed tasks | Yes | No |
| Update assigned task status | Yes | Yes |
Members can access only projects they own or belong to. Task status updates are restricted to project managers or the assigned user.
| Layer | Tools |
|---|---|
| Frontend | React, Vite, React Router, Tailwind CSS |
| Backend | Node.js, Express.js |
| Database | PostgreSQL |
| ORM | Prisma |
| Authentication | JWT, bcrypt |
| Tooling | Nodemon, Concurrently |
| Deployment | Render + Supabase |
client/β React frontend (SPA)server/β Express API + Prisma ORM- API endpoints under
/api - Backend enforces authentication and RBAC via middleware
- In production, Express serves both API and frontend
team-task-manager-fullstack/
βββ client/
βββ server/
βββ submission-assets/
βββ README.md
| Model | Purpose |
|---|---|
User |
Stores account identity, credentials, and role |
Project |
Stores project details and ownership |
ProjectMember |
Links users to projects |
Task |
Stores task status, priority, due date, and assignment |
- Role:
ADMIN,MEMBER - TaskStatus:
TODO,IN_PROGRESS,DONE - Priority:
LOW,MEDIUM,HIGH
- One user can own multiple projects
- One project can contain multiple members
- One project can contain multiple tasks
- One user can be assigned multiple tasks
| Area | Method | Endpoint |
|---|---|---|
| Auth | POST | /api/auth/signup |
| Auth | POST | /api/auth/login |
| Auth | GET | /api/auth/me |
| Projects | GET | /api/projects |
| Projects | POST | /api/projects |
| Tasks | POST | /api/projects/:id/tasks |
| Tasks | PATCH | /api/tasks/:id/status |
| Dashboard | GET | /api/dashboard |
| Health | GET | /api/health |
DATABASE_URL=postgresql://...
DIRECT_URL=postgresql://...
JWT_SECRET=replace-with-a-strong-random-secret
FRONTEND_URL=https://team-task-manager-fullstack-bcji.onrender.com
NODE_ENV=productionFor production, DATABASE_URL uses the Supabase transaction pooler and DIRECT_URL uses the Supabase session pooler for Prisma migration traffic.
Never commit production credentials.
npm install
cp .env.example .env
cp server/.env.example server/.env
cp client/.env.example client/.env
npm run prisma:generate
npm run prisma:migrate
npm run seed
npm run dev- Email: admin@example.com
- Password: admin123
- Email: member@example.com
- Password: member123
Current deployment architecture:
- React/Vite frontend is built for production
- Express serves both the frontend and REST API
- Render hosts the Node.js web service
- Supabase provides the PostgreSQL database
- Prisma manages the database schema and migrations
/api/healthprovides deployment health verification
- Signup/login works
- RBAC enforced
- Admin actions restricted
- Member restrictions applied
- Dashboard loads correctly
- Tasks update correctly
- API returns valid responses
- Prisma migrations must run before first use
- Seed script inserts demo users and data
- FRONTEND_URL is used for CORS
- Render automatically assigns
PORT
- Name: Sintu Mishra
- GitHub: https://github.com/SintuMishra



