Task Board
2024
Full-stack engineer
Web · Client project
The team was tracking sprint work in a shared doc nobody kept in sync, so status was always stale by the time anyone looked at it.
Built the board UI, the drag-and-drop interaction model, and the real-time sync layer connecting every open client.
architecture
Next.js client, an Express API for board/column/card CRUD, and a Socket.io layer running alongside it for live updates.
frontend
Drag-and-drop built directly on pointer events rather than a library, so reordering stays in sync with the server without fighting an abstraction.
backend
PostgreSQL via Prisma models boards, columns, and cards with ordered positions; Express exposes REST endpoints for the initial load and mutations.
cloud
Socket.io broadcasts board mutations to every client in the same board room, so a drag on one screen appears on every other screen within a beat.
Keeping card order consistent when two people move cards close together in time — the naive approach causes cards to jump. I used a fractional-position ordering scheme so concurrent moves resolve without a full re-sort.
Sprint status became visible in real time instead of stale-by-a-day, and the team stopped needing a stand-up just to find out what moved.