case study · pantts · project boards

every shape
of plan

Pantts is realtime, multi-tenant project boards with one idea at the centre: a card is a single row in Postgres, and that same row renders as a kanban card, a table row, a gantt bar or a node on a graph canvas — with an insights pane over the top. Every change lands in every open browser in well under a second.

05
lenses over one card model
00
copies between views
846
commits in the first ten days
102
database migrations, five weeks

the brief

every view of the plan, one live source of truth

Five lenses, zero copies.

Planning tools multiply copies of the truth: the board says one thing, the timeline another, the spreadsheet a third — and someone spends their week reconciling them. Every "view" is usually an export wearing a costume.

Pantts refuses the copies. One card model in one database is projected into five lenses, so dragging a bar on the gantt is the same write as moving a card on the board — there is nothing to reconcile, because there is only one thing.

And because collaboration tools die when half the team is locked out, members, submitters and clients are all included — Pantts never charges per seat.

the model

one row, five projections

A card is a row. Everything else is a lens.

Rank, dates, assignees, labels and data channels live on the row; each lens is just a different way of drawing it. That is what keeps five views honest where other tools keep five databases.

the live board — the landing art from pantts.com, animations and all.

the same rows through the other lenses — gantt with a rippling dependency, the grid with a live sweep, insights redrawing as the work moves, and the cursors of everyone else on the board.

lensthe same rows, rendered as
Kanban
Cards in columns with drag, multi-select, bulk verbs and realtime drag ghosts from teammates.
Table
The same cards as rows and fields — sort, filter, edit in place.
Gantt
Bars, dependencies and a timeline with months of runway, sharing one clock with scheduling.
Graph
Cards as nodes on a canvas, wired to each other — plans that are shaped like plans.
Insights
Charts over the top of the same rows. No exports, no sync jobs, no second source of truth.

the platform

realtime by default · security per row

The database tells everyone.

Realtime isn't a feature bolted onto Pantts — it is how writes propagate. Database triggers broadcast every committed change to every open browser, and the same row-level security that gates a person's requests gates their AI agents through the built-in MCP server.

two tabs, one row — the change lands everywhere because postgres announces it.

a github project becomes a live board in seconds; the sync runs both ways.

propertyhow it works
Realtime by default
Database broadcast triggers are the source of truth — every open browser updates in well under a second, with client broadcast for drag ghosts and presence for avatars layered on top.
Security per row
Row-level security on every table, enforced per request. The remote MCP server gives AI agents exactly the rows their person can see — the same policy, not a parallel one.
GitHub, both ways
Boards sync with GitHub issues in both directions — status labels, submitters and sync runs — so engineering work and planning stop drifting apart.
History that holds
A full audit trail, change history on every card, and an undo stack over every mutation.
Never per seat
Members, submitters and clients are all included. Workspace plans from free; no credit card to start.

how it was delivered

repo init 21 july · live from the first week

Ten days to a product.

846 commits in the first ten days took an empty repository to a working product, and it never stopped: every change is gated by the test battery and deployed to pantts.com as it lands. There was no launch day — just shipping.

fig 02 · the delivery timeline.

fig 03 · commits per month, from the repository history.

quantitymeasured
Repository initialised
21 July 2026
Commits in the first ten days
846
Commits to date
1,141
Database migrations
102
Automated test cases
1,700+
End-to-end suites
24
Deployment model
gated and deployed as it landed
Status
live at pantts.com

measured from the pantts repository, aug 2026.

the stack

fast where it shows, strict where it counts

Boring where it matters.

The interesting parts — the card model, the realtime layer, the lens engine — sit on deliberately unexciting foundations, with every mutation flowing through one optimistic write path that carries the undo stack.

layerchoice
Framework
React 19 + Vite 8 with the React Compiler on; strict TypeScript throughout
State
TanStack Query and Router; ephemeral UI state only in Zustand
Database
Supabase Postgres — RLS everywhere, fractional-index ordering, additive migrations
Realtime
One private channel per board; database triggers broadcast the truth
Edge and AI
Cloudflare Workers; Workers AI for RAG and agent runs
Billing
Stripe, flat and metered
Analytics
PostHog — product analytics and session replay

project · specification

projectpanttssectorproductivity · collaborationscopeproduct design · full-stack build · realtime · aimodelone card row, five lensesundo~20 actions per session, undo on every toast
engagementend to end, one teamstatuslive at pantts.comdelivered2026 · shipping daily · v0.29.1pricingboards, not seats · free tierlinkpantts.com

Planning something ambitious?

hello@envlpr.com. We'll tell you honestly whether we're the right team for it.