You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Protected routes — unauthenticated users are redirected to login
Role-Based Access Control
Feature
Admin
Member
Create tasks
✅
❌
Edit / Delete tasks
✅
❌
Add / Remove members
✅
❌
Update task status
✅
Only assigned tasks
View project tasks
✅
✅
View project members
✅
✅
Project Management
Create projects (creator is automatically Admin)
Admin can add members by searching their email
Admin can remove members
Admin can assign roles (Admin / Member)
Members can view all projects they belong to
Task Management
Tasks have: Title, Description, Due Date, Priority (Low/Medium/High)
Status workflow: To Do → In Progress → Done
Tasks are assigned to project members
Admin: full create/edit/delete/assign control
Member: update status of their own assigned tasks only
Overdue badge auto-calculated
Dashboard
Total tasks, In Progress, Completed, Overdue stats
Tasks Per User chart (shown when you are Admin of any project)
Recent tasks list
Tech Stack
Frontend: React 18, React Router v6, Axios, Vite Backend: Spring Boot 3.2, Spring Security, Spring Data JPA Database: PostgreSQL (production) / H2 (local dev) Auth: JWT (jjwt 0.12.3) Deployment: Railway
Local Development
Prerequisites
Node.js 18+
Java 21+
Maven 3.9+
Backend
cd backend
# Optional: set env vars for local Postgres, or use H2 (default)export JWT_SECRET=YourSuperSecretKeyAtLeast256BitsLong!!!!export ALLOWED_ORIGINS=http://localhost:5173
mvn spring-boot:run
# Backend starts on http://localhost:8080
Frontend
cd frontend
cp .env.example .env
# Set VITE_API_URL=http://localhost:8080/api in .env
npm install
npm run dev
# Frontend starts on http://localhost:5173