Live · Actively DevelopedProduction platform

Case study · 2025 – Present

Client Operations Platform

Website, Client Management & Business Intelligence

A modular digital platform that connects a configurable public website with inquiry and client management, content administration, analytics and business intelligence. It grew from a real-world legal-services implementation into a reusable architecture for separate client deployments.

Client Operations Platform operational dashboard
Operational dashboard

Role

Product Builder / Full-Stack Developer

Status

Live · Actively Developed

Deployment

One deployment per customer

Scope

Website → inquiries → clients → BI

Overview

What the platform actually does

The project started from a real client use case in legal services: a public-facing website backed by an administration area for content and incoming inquiries.

As the system grew, I rebuilt it around explicit product modules and shared infrastructure, turning a client-specific implementation into the first deployment of a broader reusable platform.

Today it connects public content, inquiry intake, client management, analytics and business intelligence through clear ownership and server-side boundaries. It intentionally focuses on acquisition and client operations rather than trying to become an all-purpose business management suite.

The problem

The website was only the visible part

01

The initial problem looked like a website project, but the real need crossed the public and internal sides of the business. Content had to be manageable without code changes, inquiries needed to become structured internal work, and the client needed visibility into what actually generated useful inquiries and clients.

02

That created a product-design problem as much as a coding problem: the public site, admin CMS, inquiry pipeline, client records and reporting had to feel like one coherent system without collapsing into one tightly coupled codebase.

03

The platform also handles sensitive contact and intake data, so security, authorization, auditability and recovery could not be treated as optional infrastructure added after the UI was finished.

Product evolution

From client implementation to reusable platform

The product changed shape as the original use case exposed a larger system worth structuring for long-term growth.

01

Stage 1

Real client implementation

The first version solved concrete needs from a legal-services use case: a professional public presence, editable content and an authenticated administration area.

02

Stage 2

Modular product rebuild

The application was reorganized around explicit modules for inquiries, clients, content, service areas, analytics and shared platform concerns instead of continuing as a collection of one-off client features.

03

Stage 3

Reusable and growth-ready model

The platform can support separate client deployments while also allowing a solo professional to grow into a small team through additional users, profile-driven public content and distributed content ownership.

Product surface

One system across public presence, operations and insight

The product is intentionally broader than a website, but narrower than an all-purpose business management suite.

01

Public experience

Public website & CMS

Configurable public pages, service areas, articles, FAQs, contact flows and editable Home/About content with administrative previews and controlled publishing workflows.

02

Client operations

Inquiry management

Public and manual intake, status workflows, assignment, filtering, exact protected-field search, internal notes and operational attention states.

Client management

Manual client creation and inquiry-to-client conversion, duplicate handling, responsibility management, lifecycle states, notes and linked inquiry history.

03

Intelligence

Business Intelligence

Commercial and operational reporting across acquisition, content, service areas and response workflows, combining platform-owned business data with real GA4 traffic when available.

Analytics & attribution

Consent-aware GA4 measurement and first-party attribution capture connect acquisition context with downstream inquiry and client reporting.

04

Platform foundation

Authentication & authorization

Supabase-backed identity is combined with application profiles, role-based permissions, protected server operations and an additional administrative session policy.

Auditability & data protection

Important administrative actions are audited while sensitive inquiry and client fields are protected at the application boundary and kept out of audit metadata.

Production operations

The project includes migration discipline, Sentry monitoring, automated encrypted PostgreSQL backups and unit, integration and browser-level test coverage.

Product in use

The workflow, not just the feature list

A few selected views show how the public experience, operational workflows, content management and reporting connect inside the same product.

01 · Inquiry management

From incoming request to an owned workflow

New inquiries move through a visible pipeline with service context, responsibility and explicit progression toward contact or conversion.

Client Operations Platform inquiry pipeline

02 · Client management

Conversion becomes a persistent client record

Converted inquiries stay connected to the client record, alongside responsibility, lifecycle state, internal notes and recent activity. The relationship between acquisition and ongoing client operations is kept visible instead of being split across separate tools.

Client Operations Platform client details view

03 · Content administration

Public content can evolve without code changes

Service-area pages expose publishing, SEO, imagery, structured page content and preview controls from the same administration surface that owns the operational workflows.

Client Operations Platform service-area CMS editor

04 · Business Intelligence

Traffic is connected to business outcomes

The reporting layer follows the commercial path from traffic to inquiries, relevant inquiries and clients, while keeping platform-owned business data separate from external traffic analytics.

Client Operations Platform business intelligence overview

Architecture

Clear ownership inside one deployable application

  • 01The application is a modular monolith: one deployable Next.js application with explicit feature ownership rather than a set of networked microservices.
  • 02App Router owns URL, HTTP and rendering composition; feature modules own business behavior; Core owns cross-module permissions, protected actions, audit and shared security primitives; shared infrastructure handles Prisma, PostgreSQL and Supabase integrations.
  • 03Prisma and PostgreSQL are the business persistence layer. Supabase provides hosted PostgreSQL, authentication and public asset storage, while GA4 remains an external traffic source rather than the source of truth for leads or clients.
  • 04The current customer model is one application deployment per customer. This keeps data isolation and customer-specific configuration simple without introducing runtime multi-tenancy before the product needs it.

System map

Next.js App Router

URL · HTTP · rendering · cache composition

Public site
Feature modules
Admin UI

Core · Security · Permissions · Audit

Cross-module application boundaries

PostgreSQL

Business truth

Supabase

Auth · storage

GA4

Traffic only

Engineering decisions

Where the complexity actually lives

Sensitive data

01

Sensitive Inquiry and Client values are encrypted before persistence using application-level authenticated encryption. Separate blind indexes support exact search for selected protected fields without making ciphertext deterministic.

Permissions & audit

02

Protected mutations pass through server-side permission and action boundaries, and important business/security operations are written to a dedicated audit history.

Transactional workflows

03

Inquiry-to-client conversion is handled as a transactional workflow so client creation or reuse and inquiry conversion cannot leave the system in a partially converted state.

Business data truth

04

Business Intelligence treats the application database as the source of truth for inquiries, clients and conversions. GA4 is used only for traffic and acquisition dimensions, and mock analytics is never presented as live business performance.

Fresh operational state

05

Public content uses explicit cache ownership and invalidation, while operational views such as the dashboard are read at request time to avoid presenting stale queue state as current information.

Delivery discipline

06

GitHub Actions validates dependency installation, Prisma generation and migrations, unit tests, TypeScript and the production build against an isolated PostgreSQL environment; broader integration and Playwright suites are run separately.

Trade-offs

What I deliberately did not build

The goal was not maximum feature count. It was enough structure for the current product without absorbing complexity before it became necessary.

Deliberate constraint01

Separate deployments instead of multi-tenancy

A customer-per-installation model reduces authorization and data-isolation complexity today. Runtime multi-tenancy is deferred until there is a concrete product reason to absorb that complexity.

Deliberate constraint02

Focused client operations, not an all-purpose management suite

The platform deliberately stops at website, inquiry, client, content and reporting workflows. Billing, time tracking, private document management and deeper domain-specific workflows remain outside the current scope.

Deliberate constraint03

Business truth stays in the platform

GA4 can enrich reporting with traffic data, but lead validity, client conversion and commercial outcomes always come from platform data so external analytics cannot silently redefine business results.

Deliberate constraint04

Security depth without enterprise infrastructure everywhere

The current deployment has strong application boundaries, encryption, auditing and recovery procedures while intentionally deferring higher-cost infrastructure such as distributed rate limiting, managed PITR and enterprise secret tooling until usage justifies it.

Outcome

From a client implementation to product engineering

Started as

A custom website and admin build from a legal-services use case became a reusable product architecture grounded in the original client problem.

Became

Public presence, content, inquiries, clients and reporting now operate as one coherent platform rather than separate tools.

Demonstrates

The project moved my work from page-level implementation toward product engineering across boundaries, workflows, security, data and operational trade-offs.