Vit Busek
← Work

August 2026

Work Planner

A collaborative kanban board, JIRA-board style: multiple boards per user, keyboard-operable drag and drop, due dates, and OAuth-only sign-in.

Work Planner's public demo board: three columns — Ready to work, In progress and In testing — holding cards tagged with labels, due dates and an attachment count.
Role
Solo build — frontend, backend, infrastructure
Stack
Next.js, TypeScript, Tailwind, Postgres, Drizzle, Auth.js, Vercel, Docker

What it brings

Technical design

triggerPusher channelpresigned PUT/GET

Client

  • Next.js 16 App Router

  • dnd-kit board

  • pusher-js subscriber

Server

  • Server Actions

    lib/actions — the whole write surface.

  • Auth.js

  • proxy.ts

    Sends unauthenticated /boards/* to sign-in.

Data

  • Postgres (Neon)

  • Drizzle ORM

  • cards.rank

External

  • Pusher

  • S3

    Reached over presigned URLs.

Server Actions

Drizzle

  1. Writes go through Server Actions, not route handlers. app/api holds only auth, Pusher auth, attachment redirects and health; everything else lives in lib/actions next to its tests.
  2. Cards carry fractional ranks. Dragging a card writes one row instead of renumbering the column it landed in.
  3. Attachments go straight to S3 over presigned URLs. File bytes never pass through the app, which keeps uploads clear of the function's request limits.