Zulu
This case study covers the system Plutonapps rebuilt under the client's screens: one workspace walled off from the next, booking times that hold across daylight saving, a transcript written once, and links nobody can forge.
At a glance
Zulu is a meetings workspace for teams: video rooms with live captions, booking pages, events, forms and a contact book, where each call can become a searchable memory. The client brought a working prototype; Plutonapps kept its screens and rebuilt the system underneath, from workspace isolation to time-zone-safe booking. It is pre-launch, with 792 automated test cases, one of which checks all 67 workspace-scoped tables for leaks between tenants.
Updated
- Automated test cases
- 792
- Stack
- React · Hono · PostgreSQL
- Database tables
- 70
- Tables scoped to a workspace
- 67
The client's prototype
What did the client bring to Plutonapps?
The client arrived with a working prototype of the whole product: meetings and rooms, events with registration, booking pages, forms, contacts and a memory of past calls. Its screens and navigation were right, and we kept them. The signed-in shell, the event grid and the home screen were ported from it. What sat underneath was not ready for other people's data, so we rebuilt it.
The divide
What did Plutonapps engineer?
Plutonapps rebuilt six parts of the system under the prototype's screens: workspace isolation, the live transcript, availability across daylight saving, slot holds, signed links, and saves and emails. Each row sets the risk beside what replaced it.
The prototype risk
Engineered by Plutonapps
The prototype left separation to the database's row policies, and six of its twelve meeting operations matched on an id alone. One of its four memory searches read across workspaces.
One workspace walled off from the next
Zulu's workspace boundary now lives in the application, where the unsafe query cannot be written by accident. Every read and write goes through one object that adds the workspace to the condition itself, and bypassing it takes a named call that can be found and reviewed. 67 of the 70 tables carry their workspace directly. The other three sit above any one workspace: the workspaces table itself; users, who can belong to several; and incoming payment events, recorded before their workspace is known. A test lists the 67 from the schema, fills two workspaces with the same data and proves one cannot read, change or delete the other's rows. A foreign id answers not found.
Captions reach every browser in a call. The prototype let the browsers elect a writer among themselves, so two could write every sentence, one bad id silenced the room, and one dropped message deleted a line for everyone.
A transcript written once, without holes
Zulu's server elects the writer under a lock and gives it a lease that expires, so if the writer's laptop closes, the next person to ask takes over with no tiebreak. Each line has a natural key of speaker, time and text, which makes a retry after a network drop safe: a duplicate cannot land. Lines carry the speaker's name rather than six digits of a hash, and a late joiner is shown the latest lines, not the first ones.
A booking page that offers a time its host cannot keep puts a stranger in front of an empty room.
Booking times that survive daylight saving
Zulu does all its booking clock arithmetic in PostgreSQL, which carries the time-zone database. Days are generated as calendar dates, never as 24-hour steps, so a 23- or 25-hour day can neither skip nor repeat a slot. The host's preview and the visitor's page run the same query, which subtracts bookings, live holds and the host's own meetings, and applies buffers, minimum notice and the daily limit when it is read.
Two people can reach for the same half hour at once, and the prototype's booking check never consulted the schedule: a request for 03:00 on a Sunday was accepted.
Two visitors, one slot, one booking
In Zulu, holding a slot takes a transaction lock keyed on the host's schedule rather than the instant, so overlapping times on sibling pages queue behind each other too. Inside it the whole availability check runs again for that one instant before a ten-minute hold is written, and abandoned holds are reclaimed on the next attempt. A unique index lets only one confirmed booking exist per page and start time, whatever the application does.
Guest invites, booking links and recording URLs are credentials. Two of the prototype's signers fell back to a public key or a fixed string when a secret was missing, so every token they minted could be forged.
Links nobody can forge
Every signed link Zulu mints now comes from one signer, tested in one place. Keys live on a ring, so a new key signs while the old one still verifies and rotation is a window, not an outage. Links kept in the database are stored only as hashes, and a leaked guest link can be revoked before it expires. The server refuses to boot on a missing, short or placeholder secret, and names every one at once. The prototype's seven competing settings for the app's own address, each with its own fallback, became one, checked at boot.
The prototype's instant booking confirmations were queue rows drained by a job nobody ran, and saving a weekly schedule deleted the old hours before writing the new ones, outside a transaction.
Saves that finish, emails that arrive
Zulu sends a confirmation as soon as the booking commits, and a mail outage cannot roll back an appointment that already exists. A schedule's week is replaced in one transaction, so a failed save leaves the old hours standing rather than an empty calendar. The background-jobs service checks at boot that it serves no public routes, so an unwatched second copy of the API cannot appear by accident.
“The shipping speed with the detailed documentation is what fascinated me.”
Zulu · Starter plan
Guarantees
What we hold ourselves to while it runs.
Tenancy
Every query scoped to one workspace, swept by a test
Bookings
One confirmed booking per slot, enforced by the database
Transcripts
One elected writer; a retried line never lands twice
Secrets
No fallback keys; the server will not boot without them
Results
What were the results?
- Automated test cases, across 41 test files
- 792
- Database tables scoped to a workspace and swept by a cross-tenant test
- 67 of 70
- API modules, from meetings and captions to bookings and contacts
- 21
- Meeting operations that match on an id alone, down from 6 of the prototype's 12
- 0
- Token signers that fall back to a public key or fixed string, down from 2
- 0
- Setting for the app's own address, checked at boot, in place of the prototype's 7
- 1
Stack and timeline
- Product
- Meetings workspace: video rooms, live captions, booking pages, events, forms, contacts and meeting memory
- Plan
- Plutonapps Starter plan
- Status
- Pre-launch
- Front end
- React 19 with TanStack Router and TanStack Query
- API
- Hono on Bun, in TypeScript; the same build runs request traffic and, as a second service, background jobs
- Database
- PostgreSQL with Drizzle ORM: 70 tables, 15 migrations
- Real time
- Agora video calls and speech-to-text captions
- Services
- Clerk sign-in, Resend email, Google Gemini recaps
- Tests
- 41 test files, 29 of which run on PGlite, PostgreSQL compiled to WebAssembly, rather than a mock
- Timeline
- Repository opened 31 August 2026. Its history starts with one commit that brought up the whole monorepo, followed by ten feature commits to 3 September 2026
- Figures
- Counted from the product's own repository, its code, schema and test files, at its last commit on 3 September 2026
Questions
What else should you know about Zulu?
How does Zulu handle time zones?
The day a person sees as today is worked out in their own time zone, not the server's, and booking availability is computed in the database's time-zone rules, so a day made shorter or longer by a clock change neither skips nor repeats a slot.
What did Plutonapps build for Zulu?
The system under the client's prototype: workspace isolation on every query, a booking engine that works out availability in the database's time-zone rules, a server-elected transcript writer, one signer for every signed link, and an automated test suite that runs most of its files on a real PostgreSQL engine.
What does a Zulu meeting leave behind?
Its transcript becomes the meeting's memory, searchable line by line, with a recap of decisions and action items. Items a person wrote or edited survive when the recap is generated again, unless they choose to discard them. A memory can be shared by a link that is stored only as a hash.
Can guests take part without an account?
Yes. A guest joins a call from an invitation link, a visitor books from a public page, and a registrant manages their place from their email. Each link is signed for one purpose, and a leaked guest link can be revoked before it expires.
Is Zulu live?
Not yet. Zulu is pre-launch: its system is built and tested, and it is being hardened for launch.
Everything you have just read runs on our Starter plan. It is the plan we start everyone on.
Bring us what you made. We will build it like this.
Billed yearly. Month to month is $3,999 per month.