iamsyg/Project-Task-Manager

โ˜… 0Forks 0TypeScriptGitHub โ†—Compare

README

๐Ÿ“Œ Project Task Manager

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 Demo


๐Ÿ“– Overview

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)

โœจ Features

๐Ÿ” Authentication

  • User Signup & Login
  • JWT-based authentication
  • Secure session handling

๐Ÿ“ Project Management

  • Create, update, delete projects
  • Unique project code for joining
  • Join request approval system
  • Domain-restricted joining (optional)

๐Ÿ‘ฅ Role-Based Access

  • Admin
    • Full control over project & tasks
  • Member
    • Limited to assigned tasks

๐Ÿ“Œ Task Management

  • Create & assign tasks
  • Task status tracking:
    • Pending
    • In Progress
    • Completed
  • Member-wise task progress

๐Ÿ“Š Dashboard

  • Project cards
  • Task tracking
  • Search & filter

๐Ÿ—๏ธ System Architecture

Frontend (Next.js / React) โ”‚ โ–ผ Backend (FastAPI + JWT) โ”‚ โ–ผ Database (PostgreSQL / Supabase)


๐Ÿงฑ Tech Stack

Frontend

  • Next.js / React
  • Redux Toolkit
  • Tailwind CSS

Backend

  • FastAPI
  • JWT Authentication (PyJWT)
  • Prisma ORM / Supabase

Database

  • PostgreSQL

Deployment

  • Railway (Backend)
  • Railway (Frontend)

๐Ÿ“‚ Database Schema (Simplified)

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

Contributors

iamsyg

Issues