All templates

Client portal template

Branded portal with auth, file sharing, project status, and a request inbox you can wire into your own workflow.

Supabase AuthStorageStripe optional

What is in the box

  • Branded login with email + magic link, optional Google OAuth
  • Per-client folders with signed URL file delivery
  • Project status board with milestones and owners
  • Request inbox that routes to your team Slack or email
  • Invoice + payment page wired to Stripe (optional)
  • Activity log per client so handoffs are real

Most "client portal" templates are a glorified file-sharing app with a login screen. This template is the actual portal we ship to agency and services clients, with the parts they keep asking for: branded experience, file delivery that does not get lost in email, a project status board the client actually checks, and an inbox for requests that routes to the right person on your team.

Why a portal beats email

Agencies that move from email to a portal report the same three things every time: the client stops asking "did you get my file," the sales team stops chasing down approvals, and handoffs between team members stop dropping balls. The portal is the source of truth. Email becomes a notification channel that points back to it.

That shift is what the template is built for. Every screen exists because not having it caused a real client incident on a real client engagement.

What ships in the box

Auth with email and optional Google. Branding through a single tokens file so it looks like your firm in under thirty minutes. Project status views with milestones, owners, and due dates. A file delivery view with signed URLs that expire by default so old project files do not leak after the engagement ends.

The request inbox is the part most teams underrate. Clients have small asks all day. The inbox captures them, routes them to the right team member, and tracks the response time. The first month after launch, clients tend to use the inbox heavily. After that, it settles to a healthy rhythm.

The Stripe layer is optional

Some agencies handle billing inside the portal. Others use existing billing infrastructure and want the portal kept out of the money. The Stripe layer ships off by default. Flip it on with a feature flag if you want invoices and a customer billing page inside the portal.

When to skip this template

If you only need a static file share and a status page, this template is overbuilt. Use Notion. If you need a multi-tenant SaaS-style portal with per-feature billing tiers, this template is under-built. Start with a multi-tenant SaaS template instead.

The right fit is a services firm with five to a few hundred clients, where each client needs a real experience and you need a real backend.

How to get the template

We share the template with teams that book a discovery call. Thirty minutes is enough to know whether the fit is right and which screens you will customize first.

Book a discovery call.

Included with the template

  • TanStack Start project with branded portal shell
  • Supabase schema for clients, projects, files, and requests
  • Storage buckets with signed URL helpers
  • Email templates for invites and status changes
  • Stripe checkout + customer portal integration (off by default)

Frequently asked questions

Can clients invite their own users?+

Yes, the template ships with per-client invite flow. The primary client contact can invite teammates with role-based access. You control whether self-invite is allowed.

How does file delivery handle large files?+

Storage is wired to Supabase by default with signed upload URLs, which handle multi-gigabyte files directly between the browser and storage. For very large files we recommend a separate transfer service and surfacing the link in the portal.

Is this GDPR safe?+

The template is built on EU-hostable infrastructure and handles consent, data export, and deletion. Compliance is yours to declare; the template makes it possible without rebuilding the backend.

More templates

Got an idea? We can ship it next week.

30-minute discovery call. We tell you what's possible, what it costs, and when it ships.