A task management system with Kanban boards, effortless collaboration, and role-based access control.
Backend
- Fastify + TypeScript
- PostgreSQL (Neon) with Knex.js ORM
- JWT authentication + bcrypt
- Zod validation
- RESTful API with Swagger docs
Frontend
- React 18 + TypeScript
- TanStack Router (file-based routing)
- TanStack Query (server state)
- Radix UI + Tailwind CSS
- Zustand (client state)
- DnD Kit (drag-and-drop)
Infrastructure
- Turborepo monorepo
- Docker multi-stage builds
- Nginx reverse proxy with SSL
apps/
├── backend/ # Fastify API server
│ ├── src/
│ │ ├── db/ # Migrations, schemas
│ │ ├── server/ # Routes, plugins
│ │ └── services/# Business logic (DAL pattern)
│ └── Dockerfile
└── web/ # React SPA
├── src/
│ ├── routes/ # File-based routing
│ ├── features/# Feature modules
│ └── shared/ # Reusable components
└── Dockerfile
packages/
├── ui/ # Shared component library
├── typescript-config/
└── eslint-config/
Production (EC2): https://taskerra.divyanshusoni.com
- Frontend: Nginx (port 80/443) → Static assets
- Backend: Fastify → PostgreSQL
- Database: PostgreSQL (containerized)
- SSL: Let's Encrypt certificates
- Reverse proxy: Nginx → Backend API
Alternative Deployments
- Kanban board with drag-and-drop task management
- Project and workspace organization
- Role-based access control (Admin, Member, Viewer)
- Task assignment and status tracking
- Authentication with JWT tokens
- RESTful API with OpenAPI documentation
Authentication
POST /api/v1/auth/register- User registrationPOST /api/v1/auth/login- User loginGET /api/v1/auth/me- Get current user
Projects
GET /api/v1/projects- List projectsPOST /api/v1/projects- Create projectGET /api/v1/projects/:id- Get project detailsPUT /api/v1/projects/:id- Update projectDELETE /api/v1/projects/:id- Delete project
Tasks
GET /api/v1/tasks- List tasks (filterable by project/status)POST /api/v1/tasks- Create taskPATCH /api/v1/tasks/:id- Update task (status, assignment, etc.)DELETE /api/v1/tasks/:id- Delete task
- Backend: Multi-stage build (builder → runner)
- Frontend: Vite build → Nginx static server