Corporate portals

A small product surface (three controllers, modest route count) that nonetheless represented a meaningful share of revenue. Enterprise clients with multiple ongoing engagements got a client-branded sub-experience — a custom subdomain or path, a custom logo and accent color, and a focused view onto just their own boards and deliverables.

This is the closest thing Currnt has to multi-tenancy. It’s a thin one: clients live in the same database, the same monolith renders them, and the “branding” is a small set of overrides applied at request time based on a host or path lookup.

What it covers

Representative routes

Corporate routes. Resolves on either /c/:client or a custom subdomain.
Method Path Handler Notes
GET /c/:client CorporateController.home Branded landing for this client.
GET /c/:client/boards CorporateController.boards List of this client's active and past boards.
GET /c/:client/boards/:slug CorporateController.boardDetail Branded view; same board engine underneath.
GET /c/:client/deliverables DeliverableController.list All shipped board summaries.
GET /c/:client/deliverables/:id.pdf DeliverableController.pdf Server-side PDF generation.
GET /c/:client/members CorporateController.members Visible to client admin only.
POST /c/:client/members/invite CorporateController.inviteMember Adds employee with client-scoped role.

Headline flow: client analyst → exported deliverable

Step 1: Client analyst hits client subdomain (or /c/:client direct).
Step 2: CorporateController.home resolves the client by host or :client param,
        loads the client's branding bundle (logo, accent, contact).
Step 3: User lands on branded home; sees grid of their active boards.
Step 4: Clicks a board → CorporateController.boardDetail with the same view
        machinery as the member-facing board engine, just wrapped in their
        brand chrome.
Step 5: When the board is closed and a summary is published, it appears in
        /c/:client/deliverables.
Step 6: Click "Export PDF" → server-side PDF generation hits the same
        Twig view but with a print stylesheet, sent inline as attachment.