Full-stack task management app with:
- Backend: NestJS + Prisma + PostgreSQL + Redis + Socket.IO
- Frontend: React + Vite + TanStack Router + React Query
- Auth: Register, login, logout
- OAuth: Google sign-in
- Boards: Create, list, open, rename, delete boards.
- Collaboration: Invite members by email, accept/decline invites, remove members, member status tracking (pending/accepted).
- Tasks: Full CRUD, Kanban board, drag-and-drop, reorder/move.
- Real-time: WebSocket live sync for task created/updated/moved/deleted events.
- Notifications: Fetch notifications, unread counter, mark-as-read, invite-related notifications.
- UI Improvements: Better UI for Navbar and another navbar on board page
- Profile Settings: Add profile settings so user can change name, email and profile image
- Member Display: Display members
- Task Filtering: Show only tasks for selected members that are only assign to him
- Board Customization: Add themes for boards
- Dynamic Columns: Option to add your columns in boards because now its fixed
- Appearance: Add dark theme
- Auth Security: Add verification on auth
- Advanced Task Options: Add more options on task (assign, labels, deadline, creator of task, description with rich text)
Install these before starting:
- Node.js 20+
- pnpm (
npm i -g pnpm) - Docker Desktop (for PostgreSQL and Redis)
git clone https://github.com/aditokmo/task-management.git
cd task-managementFrom the backend folder:
cd backend
docker compose up -dThis starts:
- PostgreSQL on
localhost:55432 - Redis on
localhost:6379
In backend, create .env from .env.example:
cp .env.example .envIf cp is not available on Windows PowerShell, copy manually.
Default example values are already set for local Docker setup:
PORT=8000
NODE_ENV=development
DATABASE_URL=postgresql://postgres:postgres@localhost:55432/task_management
REDIS_URL=redis://localhost:6379
JWT_ACCESS_SECRET=change_me_access_secret
JWT_ACCESS_EXPIRES_IN=15m
JWT_REFRESH_SECRET=change_me_refresh_secret
JWT_REFRESH_EXPIRES_IN=7d
CORS_ORIGIN=http://localhost:5173Update JWT secrets to secure values for real environments.
From backend:
pnpm install
pnpm prisma:generate
pnpm prisma:migrateFrom backend:
pnpm start:devBackend runs on http://localhost:8000.
Open a second terminal:
cd frontend
pnpm install
pnpm devFrontend runs on http://localhost:5173.
Frontend has working defaults, but you can create frontend/.env for explicit config:
VITE_API_URL=http://localhost:8000/api/v1
VITE_SOCKET_URL=http://localhost:8000Open http://localhost:5173 and use register/login to start managing tasks.
After initial setup, use this flow:
- Start infrastructure:
cd backend
docker compose up -d- Start backend:
pnpm start:dev- Start frontend in another terminal:
cd frontend
pnpm dev