Flowboard
Kanban workspace
A full-stack Kanban workspace built as a modular NestJS monolith.
about
Flowboard started as a way to build a real product-shaped system rather than another CRUD demo. Kanban looks simple on a whiteboard and gets complicated the moment you care about ordering, authorization, and concurrent edits.
The backend is a NestJS monolith organized by domain: auth, workspaces, boards, tasks. The frontend is Next.js. Prisma and PostgreSQL handle persistence. Docker Compose runs Postgres locally so the dev environment matches production closely enough.
interesting
Moving a card normalizes positions inside a single database transaction. The client sends the target position, the server recalculates and persists the whole column's ordering atomically.
Authorization is enforced in the Prisma query, not just at the route guard. A task cannot be read or mutated across workspaces even if the route guard is bypassed.
The codebase is a modular monolith with visible domain boundaries. Each module owns its service, controller, and data access. Splitting it into services later would be a mechanical change, not a rewrite.
Seeded data includes multiple roles and workspaces, so authorization paths are testable end to end.
The hardest part was transactional position normalization. If I rebuilt it, I would add WebSocket sync so multiple users see live board updates instead of pulling changes.
stack
NestJS · PostgreSQL · Prisma · Next.js · TypeScript · Docker
links


