A full-stack web application that enables teams to create projects, assign tasks, collaborate, and track progress with role-based access control (Admin/Member).
Built to simulate real-world team workflows similar to tools like Google Classroom, Trello, and Asana.
- ๐ Live URL: https://project-task-manager-production-56d6.up.railway.app/
- ๐ฆ GitHub Repo: https://github.com/iamsyg/Project-Task-Manager
This application allows users to:
- Create and manage projects
- Invite team members via project code
- Assign tasks and track progress
- Collaborate using comments
- Manage roles (Admin vs Member)
- User Signup & Login
- JWT-based authentication
- Secure session handling
- Create, update, delete projects
- Unique project code for joining
- Join request approval system
- Domain-restricted joining (optional)
- Admin
- Full control over project & tasks
- Member
- Limited to assigned tasks
- Create & assign tasks
- Task status tracking:
PendingIn ProgressCompleted
- Member-wise task progress
- Project cards
- Task tracking
- Search & filter
Frontend (Next.js / React) โ โผ Backend (FastAPI + JWT) โ โผ Database (PostgreSQL / Supabase)
- Next.js / React
- Redux Toolkit
- Tailwind CSS
- FastAPI
- JWT Authentication (PyJWT)
- Prisma ORM / Supabase
- PostgreSQL
- Railway (Backend)
- Railway (Frontend)
CREATE TABLE users (
id UUID PRIMARY KEY,
name TEXT,
email TEXT UNIQUE,
password TEXT,
refresh_token TEXT
);
CREATE TABLE projects (
id UUID PRIMARY KEY,
title TEXT,
description TEXT,
due_date TIMESTAMP,
status TEXT,
project_code TEXT UNIQUE,
admin_id UUID,
require_approval BOOLEAN
);
CREATE TABLE project_members (
id UUID PRIMARY KEY,
project_id UUID,
user_id UUID,
role TEXT
);
CREATE TABLE tasks (
id UUID PRIMARY KEY,
title TEXT,
description TEXT,
project_id UUID,
assigned_to UUID,
status TEXT,
due_date TIMESTAMP
);
## ๐ Roles & Permissions
### ๐ Admin
- Create/Delete project
- Manage members
- Accept/reject join requests
- Create/Delete tasks
- Assign tasks
- Update project/task details
- Manage documents
- Close project/task
### ๐ค Member
- View projects
- Update own task status
- Comment on tasks
---
## ๐ Workflow
1. **Signup / Login**
2. **Create Project**
- Generates a unique project code
3. **Join Project**
- Members join using code
- Admin approves requests
4. **Task Management**
- Admin creates and assigns tasks
- Members update progress
5. **Completion**
- Admin monitors and closes tasks/projects
---
## ๐ก API Documentation
### ๐ Auth APIs
#### Signup
```http
POST /auth/signup
{
"name": "John",
"email": "[email protected]",
"password": "123456"
}
POST /project/create
{
"title": "Project A",
"description": "Optional",
"due_date": "2026-06-01",
"require_approval": true
}
## โ๏ธ Installation
### 1. Clone Repository
```bash
git clone https://github.com/iamsyg/Project-Task-Manager
cd Project-Task-Manager```
### Backend setup
```cd backend
pip install -r requirements.txt
uvicorn server:app --reload```
### frontend setup
```cd frontend
npm install
npm run dev```
๐ Deployment
Backend: Railway
Frontend: Railway
๐ง Design Decisions
JWT Authentication โ Stateless & secure
Role-Based Access Control (RBAC) โ Real-world permission model
Project Code System โ Inspired by Google Classroom
Modular Architecture โ Clean separation (routes, controllers, models)
๐ Future Improvements
Real-time notifications (WebSockets)
File/document uploads
Activity logs
Email invitations
Kanban board UI
Analytics dashboard