01 Internal tooling · Live, staff only
The Shoot
The firm's productions were running across a calendar, a spreadsheet and a group chat. This is one place for the booking, the crew, the gear, the vendor and model payments and the payroll, posting straight into central billing.
Built with
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
Portfolio
The systems
behind the work.
Applications with a sign-in, a workflow and consequences. The firm runs on these every day.
Screens from systems in daily use.
The same portfolio, served in full on both TNAADO domains. Nothing here redirects you.
portfolio.tnaado.ca
portfolio.tnaado.com
The work
Web software, 13 in the record.
Screens from systems in daily use.
Internal tooling. Built for the firm's own operations. Not for sale, shown as proof of capability. Every entry in this category is one of them, so there is nothing here to filter. Search still works.
Showing all 13 entries
01 Internal tooling · Live, staff only
The Shoot
The firm's productions were running across a calendar, a spreadsheet and a group chat. This is one place for the booking, the crew, the gear, the vendor and model payments and the payroll, posting straight into central billing.
Built with
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
02 Internal tooling · Live, staff only
TNAADO Equip
Production gear goes out in cases and comes back short. Every unit carries a QR label that opens its own record, and a shoot cannot close until each piece has been counted back in.
Built with
React
TypeScript
Vite
Supabase
Postgres
Swift
Open the entry
03 Internal tooling · Live, staff only
Newsroom CMS
Everything filed, whether an article, a journal entry or an episode, moves through one review queue and a compliance checklist that has to be signed before it can publish. Publishing is a decision with a name on it.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Open the entry
04 Internal tooling · Live, staff only
Socials
Every account connected through its own official API, with one publishing calendar, one media library and email-driven approvals. The same layer is extended to the firm's clients under their own sign-in.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Open the entry
05 Internal tooling · Live
Client Portal
Where a client sees their own work without emailing to ask: projects, the shoots booked inside them, the budget agreed, the invoices raised against it, and a card payment on the invoice itself.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
06 Internal tooling · Live
Reader Portal
The self-serve account face of the newsroom. A reader signs in with Google or Apple, and there is no password anywhere in the product to lose, reset or leak.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
07 Internal tooling · On hold with Dispatch Live
Reporter Portal
Where field reporters see what their footage earned and get paid for it. Commission accrues per accepted pickup against a named pay period, clears a review hold, then settles on a fixed schedule.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
08 Internal tooling · Live
Store Admin
It follows an order from checkout through payment, print partner and shipping, and isolates the ones that were paid but never dispatched so a person has to deal with them instead of a customer discovering it.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
09 Internal tooling · Live
Events and Ticketing
Ticket types and inventory per event, hosted checkout, a QR ticket on every sale and a door scanner that checks it against a live admitted count, with a manual fallback for when the room has no signal.
Built with
React
TypeScript
Vite
Supabase
Postgres
Stripe
Open the entry
10 Internal tooling · Retired
Photo Licensing Store
Everything the public could see was a watermarked preview. The clean original sat in private storage with no public address and was released on a short-lived signed link only after payment cleared.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Stripe
Open the entry
11 Internal tooling · Live, staff only
Labs Admin Backend
One administrative backend across the Labs products. Access is scoped per product and per function, so adding a product does not quietly widen anybody's existing reach.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Open the entry
12 Internal tooling · Live, staff only
Workforce and Payroll
Built to replace a paid payroll provider. It holds employment records and Social Insurance Numbers, so it was given its own database from the first commit rather than a table inside the billing system. The screens here are the real portal run against a local stand-in database: the employee, the addresses and every pay figure on them are invented.
Built with
Next.js
React
TypeScript
Supabase
Postgres
Open the entry
13 Internal tooling · Live, staff only
Booking Desk
Decides which member of staff answers which kind of call, holds the availability windows and the blackout days, and writes the accepted booking into a real calendar. The screens here are the real console run against a local stand-in database: the staff, the callers and every booking on them are invented.
Built with
JavaScript
Supabase
Postgres
Google Calendar API
Open the entry
Nothing in web software matches that.
There are 13 entries on this page. Try a different word, or look at another category.
Work with the firm
We build these for other companies.
TNAADO sells two things: technology, and media. Everything on this page is one of them, built either for a client or for the firm itself.

