Case Study
A white-label agency platform built from scratch — marketing site, content management, a service catalog with online checkout, a full client portal, admin order management, and a built-in lead capture pipeline with a dynamic project cost estimator. The same system that runs Ezyful Digital is deployable for any agency in hours, not months.

Running a digital agency without the right infrastructure is a constant drain. Client communication lives in email threads. Project status lives in someone's head. Deliverables get shared through DMs. Invoices are exported manually. Onboarding a new client takes days of back-and-forth instead of minutes.
Off-the-shelf tools — project management apps, billing platforms, CMS systems — each solve one piece of the puzzle. But they don't talk to each other, they're not branded, and they force clients to log into yet another third-party app.
On the marketing side, most agency sites have no lead capture beyond a contact form. Visitors who aren't ready to book a call leave without a trace — no way to nurture them, no data on what they were looking for.
The alternative — building something custom — is typically too expensive and slow for a small agency to justify.
A single, self-contained application that covers everything an agency needs: a public-facing marketing site, a service and package catalog with online checkout, a headless CMS, a fully branded client portal, and a complete lead capture pipeline — all in one codebase, deployable on a $14/month VPS.
Built to be white-labelled. Every design token — colors, fonts, border radius, hero style — is configurable from the admin panel and applied site-wide at the server level. A new agency can have their branded version running with their own domain, services, and client base without touching a line of code.
The lead pipeline captures prospects at every touchpoint — contact form, newsletter signup, and a dynamic project cost estimator — and feeds them into Loops for segmented drip sequences based on project type, budget range, and timeline.
Every visual property of the platform — brand colors, typography, border radius, and hero background style — is stored in the database and injected as CSS custom properties at the server level. Switch the accent color in the admin and every button, link, and highlight updates instantly.
An embedded headless CMS handles everything: services, packages, case studies, testimonials, FAQs, blog posts, pages, and media. Drafts, versioning, and preview are built in. The admin panel is itself white-labelled with a custom logo, dashboard, and order overview.
A structured catalog of services and tiered packages, each with delivery timelines, revision counts, feature lists, and requirement intake questions. Packages have a status lifecycle and a sort order.
Clients browse the catalog, select a tier, complete a requirement intake form, and check out online via Stripe. Orders are created in the database on successful payment and the client is automatically provisioned in the portal. Admins can also create orders manually without going through checkout — useful for bespoke or pre-agreed engagements.
Every order has a custom admin view — a server-rendered overview tab showing the full order in one screen: current status, status history timeline, client details, payment summary, package snapshot, requirement questions with client answers, message thread, and uploaded documents. Admins update status, send messages, and manage everything without leaving the overview.
Admins can create orders for clients directly — no checkout required. The system automatically sets the order source, status, and builds a snapshot from the selected package tier or custom scope (title, description, delivery days, price). Requirement questions defined during creation are bridged into the snapshot so the client sees them immediately in the portal.
When an admin creates an order, they can define the client requirement questions directly in the admin — question text, type (text, textarea, select, file upload), required flag, and help text. The questions are stored in the order snapshot and rendered as a form in the client portal the moment the client logs in.
For admin-created orders paid outside of Stripe — bank transfers, invoices, or other arrangements — the admin records payment directly from the order overview: amount, method, and date received. The payment is immediately reflected on the client invoice.
An authenticated, branded portal where clients manage everything related to their projects. Every route is server-side session-validated. Clients see their orders, submit project requirements, exchange messages with the agency, download deliverables and invoices, and request revisions when reviewing work.
Every order has a dedicated message thread. Clients and the agency exchange updates, feedback, and files in context — directly tied to the relevant order. Unread message counts appear in the portal nav and on each order card.
A notification system surfaces order status changes, new messages, and document uploads. The portal nav shows an unread badge with live counts. Status change emails are sent automatically via Resend and key milestones fire events in Loops.
One-click invoice generation for any active or completed order. PDF invoices are generated server-side using React PDF and streamed directly to the client — no third-party invoicing tool needed.
The booking CTA throughout the marketing site — hero, services, contact — supports multiple providers: Cal.com, Calendly, and HubSpot Meetings. The active provider and its link are set in the admin; all pages and the BookingButton component update automatically without code changes.
A multi-step wizard at /estimate that gives visitors a realistic market cost range for their project type. Questions, ranges, platform multipliers, and result copy are all configurable from the admin — no code changes needed. Leads submit their email to unlock the full breakdown, which creates a segmented contact in Loops.
Three capture points — contact form, newsletter signup in the footer, and the cost estimator — all funnel into a Leads collection in the admin. Each lead is tagged by source and synced to Loops with project-type properties for segmented drip sequences. When a lead converts via checkout, it is automatically marked as converted with the linked client record.
The admin home screen shows real-time stats — total revenue, average order value, a six-month monthly revenue bar chart, a recent orders table, and quick links to key admin sections.
Everything below is live, operational, and serving real users.
Full marketing site
Services, catalog, case studies, contact, and supporting pages, all CMS-managed
Online catalog & checkout
Tiered packages with intake forms and live Stripe checkout; orders created on successful payment
Admin order creation & management
Admins create and manage orders without checkout — custom scope, requirement builder, manual payment recording, inline client assignment
Custom admin order overview
Server-rendered overview tab per order — status, history, client info, requirements, messages, payment, and documents in one screen
Complete client portal
Auth-gated, branded — orders, messages, notifications, document delivery, revision requests, and invoice PDF generation
Lead capture pipeline
Contact form, newsletter, and cost estimator all feed a Leads collection synced to Loops with source and project-type segmentation
Dynamic project cost estimator
Admin-configurable wizard — project types, features, platform multipliers, and result copy all managed from the admin UI without code changes
White-label ready
Every design token configurable from admin; logo, colors, fonts, and hero style applied site-wide
Multi-provider booking integration
Cal.com, Calendly, or HubSpot Meetings — switch provider from admin without touching code
Custom admin dashboard
Revenue stats, average order value, six-month revenue chart, and recent orders table
Self-hosted, one-command deployment
Runs on a standard VPS with Docker Compose + Nginx; full deployment guide included