trevato/tempo
Public: anyone can read this; the crew can change it.
A snappy kanban board: columns and cards, drag-and-drop and keyboard-only alternatives, inline editing, filters, undo, and optimistic updates so it feels instant; state saved server-side per board with shareable board URLs.
- The types are checked on every push: a tsconfig, a typecheck in the check, and the one error it already finds
- A column added to the schema reaches the database production already has: one ordered migration list
- Every board read scans every card in the database: an index on card(board_id), and a query plan the tests assert
- A phone shows one whole column, not one and a sliver: a width breakpoint, snap, and a header that stays
- A board someone shared with you is on your list wherever you sign in
- Undo takes back your own last change, not your colleague's
- Every change on a shared board records who made it: an actor key, and a guest's HttpOnly cookie
- A refused body (413) leaves the next write hanging: the connection closes with the upload unread
- A column can say how much work belongs in it: an optional limit, shown and never enforced
- Two people editing one card do not silently overwrite each other
- An abandoned guest board does not live forever: a stated retention, and a reason to sign in
- Behind the forge's proxy, every guest may share one write-limit key
- A chunked POST with no content-length is read whole: the 64KB cap counts the declared length, not the bytes read
- The page says what it is: a language, an icon in the tab, and a colour for the browser chrome
- The security floor is asserted on every kind of response, not on two
- A card can say whose it is: assign it to a signed-in person
- Production leaves no trace: one line for every refusal and every slow request
- What changed while you were away: the board's recent activity
- Signing in keeps the boards this browser made, in one press
- The terminal draws the board that fits the window, and keeps the cursor on screen
- A change someone else makes is announced, not just drawn
- Keyboard first on a full board: Tab moves between columns, not through three thousand controls
- Half a megabyte of HTML goes out uncompressed: gzip the responses that ask for it
- A colleague's move costs a kilobyte, not half a megabyte: the live event carries what changed