# case · 07 / 07 · 2024
● active · internalreact 18supabaserbacstartup ops
Costos — the spreadsheet killer for startup founders.
#01 · the problem
// why we built it
Running a startup out of spreadsheets is how things fall through the cracks.
Costos is a private, role-gated operations hub built to replace spreadsheets for early-stage startup management. Real-time view of expenses, clients, financials, and tasks — without the overhead of enterprise tools.
Built for Neurosiv first, designed to be white-labelled for any early-stage team.
// stack
frontend
React 18, Vite, Tailwind CSS — strict mode, fast HMR
charts
Recharts — spend curves, KPI cards, burn rate at a glance
backend / db
Supabase — PostgreSQL + Auth, versioned migrations
icons
Lucide React — consistent iconography throughout
auth
Supabase Auth + custom tab permission map (no third-party library)
#02 · modules · 9 total
One dashboard. Everything in view.
#03 · engineering highlights
Simple stack. Clever where it counts.
1// role → visible tabs map
2export const TAB_PERMISSIONS = {
3 founder: ["overview", "expenses",
4 "clients", "founders",
5 "contracts", "tasks",
6 "users"],
7 member: ["overview", "tasks",
8 "activities"],
9} as const
10
11// tabs render only what the role can see
// technical highlights
rbac without a library
Pure Supabase Auth + a custom tab permission map. Role is stored in the user profile; the nav renders only what that role can access.
file attachments in postgres
Payment proof uploads stored as base64 data URLs directly in Postgres — no separate file storage bucket required. Keeps the schema self-contained.
offline-tolerant design
Graceful empty states and toast notifications throughout. The UI degrades cleanly when Supabase is unreachable rather than showing blank screens.
versioned migrations
Supabase migrations checked in alongside the code — schema changes are reproducible across environments with zero manual steps.
no component library
Clean, minimal dark-mode UI built from scratch with CSS custom properties. Consistent design system without the weight of shadcn or MUI.
#04 · at a glance
