A full-stack task management SaaS built with Next.js, Node.js, PostgreSQL, and Socket.io.
Layer
Tech
Frontend
Next.js 14, React, TypeScript, Tailwind CSS, shadcn/ui
Backend
Node.js, Express, TypeScript, Socket.io
Database
PostgreSQL (Prisma ORM)
Cache / Sessions
Redis
DevOps
Docker Compose, GitHub Actions
Node.js 20+
Docker Desktop
1. Clone & install dependencies
git clone < repo-url>
cd taskflow
npm install
2. Start the database services
docker compose up -d
# Starts: PostgreSQL on :5432, Redis on :6379, pgAdmin on :5050
cp apps/server/.env.example apps/server/.env
# Edit .env if needed (defaults work with docker-compose)
4. Run database migrations + seed
cd apps/server
npm run db:migrate # Creates tables
npm run db:seed # Adds demo user + sample data
5. Start development servers
cd ../.. # back to root
npm run dev
# Server: http://localhost:4000
# Client: http://localhost:3000
Email: demo@taskflow.dev
Password: demo1234
taskflow/
├── apps/
│ ├── server/ # Express API
│ │ ├── prisma/ # Database schema & migrations
│ │ └── src/
│ │ ├── controllers/
│ │ ├── services/
│ │ ├── routes/
│ │ ├── middleware/
│ │ └── lib/ # prisma, redis, jwt, socket
│ └── client/ # Next.js app
├── packages/
│ └── shared/ # Shared TypeScript types
└── docker-compose.yml
Method
Path
Auth
Description
POST
/api/auth/register
—
Create account
POST
/api/auth/login
—
Login
POST
/api/auth/refresh
cookie
Refresh access token
POST
/api/auth/logout
✅
Logout
GET
/api/auth/me
✅
Current user
GET
/api/workspaces
✅
List workspaces
POST
/api/workspaces
✅
Create workspace
GET
/api/boards/:id
✅
Get board with columns & tasks
POST
/api/tasks
✅
Create task
PATCH
/api/tasks/:id
✅
Update task
PATCH
/api/tasks/:id/move
✅
Move task (drag & drop)
Event
Direction
Description
board:join
client→server
Join a board room
TASK_CREATED
server→client
Broadcast new task
TASK_MOVED
server→client
Broadcast task move
TASK_UPDATED
server→client
Broadcast task update