FlagshipClient Portal & Agency Operations Platform

Aiki Client Portal

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

Client PortalAgile BoardsInvoicingNotifications

Stylized preview. The live portal carries client data, so we drew it instead of screenshotting it.

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.

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

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.