Client Portal & Agency Operations Platform

Aiki Client Portal

The client portal and admin platform we run our own agency on

Client PortalAgile BoardsInvoicingNotificationsSupabase
partner.aikilabs.tech
Budget burn · Retainer€9,300 / €15,000 · 62%

Computed live from logged billable time — not a typed estimate.

37.5h

Logged this sprint

4

Open tickets

Fri

Next delivery

Activity

  • You logged 2.5h on “ERP sync hardening”12m ago
  • System moved “Invoice #0042” to Paid1h ago
  • You commented on “Onboarding flow”3h ago
  • Weekly digest sent to client · 4 updatesMon 09:00

Interactive preview with mock data — click the tabs to move between screens. Redrawn, because the live app carries client data.

01 — The challenge

Agency work tends to hide behind email. Clients ask what got done this week, someone assembles a status update by hand, invoices arrive as PDF attachments with no context, and scope questions turn into archaeology through old threads. We wanted the opposite: one system where the work, the hours, and the money stay visible to both sides. And we refused to run our own operations in a different tool from the one clients look at, because then the portal rots the moment it stops being convenient for us.

02 — What we built

  • Admin app covering the full delivery cycle: clients, projects, drag-and-drop agile boards with sprints and epics, time tracking, and Austrian-compliant invoicing with PDF generation and email sending
  • Client portal on the same database, so clients see their projects, boards, budget burn, sprint timelines, files, and invoices with zero sync lag
  • Live budget meters computed from logged billable time, not from estimates someone typed into a slide
  • Notification engine: database triggers record every event, scheduled edge functions email the right people, and each client gets a weekly digest
  • Row-level security in Postgres isolates every client organization on shared tables, verified by role simulation
  • Jira bridge for clients who already live in Jira: their boards render inside the portal through a secured edge function
  • Deliverables hub for staging links, repositories, design files, and document exchange in both directions
  • Invitation-based onboarding: the client gets an email, sets a password, and lands in a portal scoped to their organization

03 — The result

We run Aiki Labs on this system every day: hours, sprints, invoices, client communication. Clients log in and see what we see, minus internal noise. The question "what got done and what did it cost" is answered by the portal before anyone has to ask it. And because this is the same codebase we build client portals from, every improvement we ship for ourselves lands in client projects too.

Operational impact

2 apps, 1 database

admin and client portal in lockstep

Both apps read and write the same Postgres tables. Row-level security decides who sees what, so there is no sync job to break.

Live

budget burn for every project

Burn meters derive from logged billable minutes and snapshot hourly rates. Clients see spend against budget in real time.

Minutes, not meetings

for routine status questions

Boards, timelines, and activity feeds answer day-to-day progress questions that previously needed a call or a written summary.

Every event

logged and notified

Database triggers write an activity log; cron-driven edge functions turn it into targeted emails and a weekly per-client digest.

  • One Postgres database, two apps: admin operations and the client portal never drift apart
  • Clients watch budget burn computed from real logged time, updated the moment work is logged
  • Ticket moves, comments, sprints, and invoices trigger targeted email notifications automatically
  • Invoicing meets Austrian legal requirements: sequential numbering, snapshot immutability after issue

Under the hood

Frontend
Next.js 16React 19TypeScriptTailwind CSS 4
Backend & data
SupabasePostgreSQL + RLSEdge Functions (Deno)pg_cron
Infrastructure
VercelTurborepo + pnpmGitHub
Connected services
Jira CloudResendPayload CMS

What's connected

Jira Cloud
Clients who track work in Jira see their live boards inside the portal. An edge function holds the API token; the browser never touches it.
Resend
Delivers issued invoices, event notifications, and the weekly digest from our own domain.
Supabase Auth
Handles the invitation flow, password setup, and sessions for both apps against one user base.
Payload CMS
Runs the content behind this website from the same admin deployment, so marketing and operations share infrastructure.

Want something like this?

Book a free consultation — we'll map your workflows and tell you exactly what to build.