srpen 2026
Work Planner
Sdílená kanbanová nástěnka ve stylu JIRA: víc nástěnek na uživatele, drag and drop ovladatelný klávesnicí, termíny a přihlášení jen přes OAuth.

- Role
- Sólo projekt — frontend, backend, infrastruktura
- Stack
- Next.js, TypeScript, Tailwind, Postgres, Drizzle, Auth.js, Vercel, Docker
Co to přináší
- Nástěnky, sloupce a karty stojí na skutečném schématu v Postgresu — dávno za kostrou s health routou, kterou README pořád popisuje.
- Přetahování mezi sloupci ovladatelné klávesnicí, postavené na dnd-kit.
- Kořen webu je veřejná demo nástěnka — skutečná aplikace, která se naplní při každé návštěvě a nic neukládá, takže si jde na co sáhnout i bez účtu. Nástěnky, které zůstávají, hlídá OAuth (Google a GitHub).
- 291 testů napříč stackem: 211 unit a komponentových, 80 end-to-end v Playwrightu.
Technický návrh
triggerPusher channelpresigned PUT/GET
Klient
Next.js 16 App Router
dnd-kit board
pusher-js subscriber
Server
Server Actions
lib/actions — celá zapisovací plocha.
Auth.js
proxy.ts
Nepřihlášené požadavky na /boards/* posílá na přihlášení.
Data
Postgres (Neon)
Drizzle ORM
cards.rank
Externí služby
Pusher
S3
Dostupné přes předpodepsané URL.
Server Actions
Drizzle
- Zápisy jdou přes Server Actions, ne přes route handlery. V app/api zůstalo jen přihlášení, autorizace Pusheru, přesměrování příloh a health; všechno ostatní leží v lib/actions vedle svých testů.
- Karty nesou zlomkové pořadí. Přetažení karty zapíše jeden řádek místo přečíslování celého sloupce, do kterého karta spadla.
- Přílohy jdou rovnou do S3 přes předpodepsané URL. Bajty souboru nikdy neprocházejí aplikací, takže se nahrávání nezadrhne o limity požadavku ve funkci.