← All projects

Fro Admin

Client
Fro
Industry
Operations back office (on-demand services)
Year
2026

The operations back office behind the Fro on-demand marketplace: bookings and live job tracking, provider wallets, ledger entries and withdrawals, payments, services catalogue and granular role-based permissions, on Supabase and PostgreSQL.

Fro Admin payments overview with ledger tiles

20+

Tables behind bookings, money and access

4

Separate money concerns: wallet, transaction, balance, withdrawal

0

Balances stored without a ledger to rebuild them

What it covers

  • Bookings & live job tracking
  • Provider wallets & ledger
  • Withdrawals & payouts
  • Payments & payment events
  • Services & categories catalogue
  • Expenses tracking
  • Affiliate programme
  • Threads & messaging
  • Granular RBAC

The half of a marketplace nobody sees

The public side of an on-demand marketplace is a booking form. The side that decides whether the business works is this one: who took the job, what the customer paid, what the provider is owed, what the platform kept, and whether the money has actually moved.

Money as a ledger, not a number

Provider earnings are ledger entries rather than a running balance. Wallets, wallet transactions, provider balances and withdrawals are separate concerns, so a withdrawal can be traced to the jobs that funded it and a balance can always be recomputed from its history.

Jobs in flight

Bookings carry live location for jobs in progress, with threads and messages against each one, so a dispute is answered from the record rather than from memory.

Permissions with verbs

Roles, permissions, role permissions and per-user permission grants are separate tables, so access is granted by verb on a resource rather than by handing someone the admin role.

How it was built

Svelte
TypeScript
PostgreSQL
Supabase
Drizzle
Framework

SvelteKit

Server load functions, form actions and endpoints; SSR by default.

Svelte 5

Runes for reactivity ($state, $derived, $effect).

Language

TypeScript

Strict mode across app and server code.

Data

PostgreSQL

Primary datastore.

Supabase

Managed Postgres with row-level security.

Drizzle Kit

Committed SQL migrations rather than push-to-prod diffing.

Drizzle ORM

Typed schema and queries, with migrations generated from the schema.

Forms

Superforms

Progressive-enhancement forms with server-side validation.

Zod

One schema validating both client and server.

UI

Bits UI

Headless primitives behind the component library.

Chart.js

Reporting charts.

Dark mode

System-aware theme switching.

Lucide

Icon set.

TanStack Table

Sorting, filtering and pagination for admin tables.

Embla

Carousels.

LayerChart

Reporting charts.

Tailwind CSS

Utility-first styling with a project design token layer.

Reporting

jsPDF

Server-side PDF generation for reports and receipts.

jsPDF AutoTable

Tabular report export.

Inside the system

Fro Admin payments overview with ledger tiles
Every money tile names the table and column it is read from, so a number can always be traced to its source.
Fro Admin operations dashboard
The ops centre: booking pipeline, live activity and revenue for the day.
Fro Admin services catalogue
A listing is only bookable when it is both active and booking-enabled, which is why those are two separate filters.
Back to all projects