
🚀 A collaborative Kanban app with realtime presence and AI task planning, where every AI call runs through a durable, retry-safe job queue and every suggestion is reviewed before it touches the board.
📌 At a glance
👤 Role: Solo: full-stack engineering
🗓️ Timeline: August–October 2026 · 19 commits
🟢 Status: Live demo (free tier, about 1 minute cold start)
🧰 Stack: NestJS · TypeScript · PostgreSQL · Prisma · Redis · Socket.IO · TanStack Start · OpenAI
🔗 Live demo: ai-kanban-board-front.onrender.com
💻 Code: github.com/balwanbamniya/ai-kanban-board
🎯 The problem
Most "AI-powered" task tools bolt a chat box onto a board and write whatever the model returns. On a shared team board that's two risks at once: an AI call that times out halfway through a request, and generated content landing in shared work without review.
🛠️ What I built
The opposite approach: AI as a reviewed, auditable background job inside a properly multi-user product.
👥 Board roles (owner, admin, member, viewer) and invitations
🟢 Live presence and cursors over Socket.IO, scaled with Redis
🗂️ Conflict-safe drag-and-drop between columns
✨ AI task suggestions and board summaries that users review and pick before applying
🔐 Sign-in with Clerk; a NestJS API with per-board permission checks

⚡ Hard problems solved
🔁 Retry-safe background jobs. Postgres is the job queue: workers claim one job at a time with a 120-second lease. If a worker crashes, the job is picked up again, and a lease token stops a stale worker from overwriting newer results.
📤 No lost realtime updates. Every change, its activity log entry and its broadcast event are saved in one transaction (transactional outbox), so the board and the live updates can never disagree.
🧠 AI output you can trust. Board content is treated as untrusted data, never as instructions. Responses must match a strict schema, refusals and incomplete answers are rejected, and temporary errors (408, 429, 5xx) are retried while permanent ones fail fast.
🖱️ Drag-and-drop without lost updates. Fractional sort keys mean a move rewrites one row, and a version check means two people dragging the same card can't overwrite each other.
🔄 AI run lifecycle: 📝 Request → ⏳ Queued → 🔒 Claimed → ✨ Generated → ✅ Validated → 👀 Reviewed → 📌 Applied (exactly once)

📈 Results
✅ 187 automated tests passing: 121 API unit/HTTP, 39 frontend and 27 integration tests against real Postgres and Redis, including the Socket.IO gateway
🔌 39 REST endpoints across 10 controllers
🗄️ 11 Prisma models and 9 migrations
🛡️ 0 production dependency vulnerabilities at audit
🔄 CI on every pull request validates the schema, runs migrations, runs the seed twice to prove it's idempotent, then lint, type checks, tests and build
🕰️ Date logic tested across both 23- and 25-hour daylight-saving days
🔭 What's next
⚡ Optimistic drag-and-drop (the version check already makes rollback safe)
📡 Stream AI progress with server-sent events instead of polling
☁️ Paid hosting to remove the free-tier cold start of about 1 minute
💬 Want reliable AI features or realtime collaboration in your product? Let's talk.
0 likes · 1 view · Oct 12, 2026
Collaborative Kanban app with realtime presence and AI task planning. NestJS API, durable retry-safe AI job queue, validated suggestions, 187 tests.