← Case Studies
Small Business Suite

Small Business Suite

A multi-tenant web platform built solo — one Node/Express API and one Supabase database powering custom customer websites, admin dashboards, booking flows, and payments for any small business vertical. 2 real clients live and taking bookings.

Node.js · Express · Supabase · Stripe · Resend · Vercel
Role
Solo build
Clients
2 live · 3 spec · 1 in talks
Verticals
6 live
Status
Active — taking new clients

The Idea

Small business owners pay $100–200/month for booking platforms like Mindbody or Vagaro that weren't designed for solo operators. The branding is generic, the features are overwhelming, and the pricing doesn't scale down. I built an alternative — a full-stack platform I can deploy for any small business vertical in days, with a no-code admin dashboard so the owner is never waiting on a developer for changes.

The architecture is multi-tenant: one Node/Express API and one Supabase database handle every deployment. Each tenant gets their own isolated data, their own Stripe account connected via Stripe Connect, and a fully custom-branded site. Adding a new client means a database row and a subdomain — not a new codebase.

What Every Deployment Gets

Customer Website

Custom-branded public site — hero, services, bio, FAQ, reviews, and booking — all controlled from the admin dashboard with no code changes.

Booking + Stripe Checkout

End-to-end booking flow with Stripe Checkout. Tiered refund policies, Resend confirmation emails, and idempotency checks against double-booking.

Admin Dashboard

No-code dashboard for appointments, services, availability, gift cards, discount codes, appearance, SEO, and email automations. A 7-step onboarding wizard walks non-technical owners through initial setup.

Gift Cards & Packages

Gift cards purchased via Stripe, emailed to recipients, and redeemed at checkout — balance deducted server-side. Session packages issue codes through the same flow.

Email Automations

Booking confirmations, cancellation receipts, reschedule confirmations, and post-appointment review request emails — all configurable from the dashboard with no developer involvement.

Custom Domain

Owners connect their own domain via a Cloudflare API integration in the dashboard. SSL provisioning, DNS configuration — handled server-side.

Architecture

A single Express API handles every tenant. Middleware resolves the incoming hostname to a tenant record in Supabase, then attaches the tenant context to every downstream request. All booking, payment, admin, and auth logic runs once — the tenant context is what makes it specific to that client.

Payments. Each client connects their own Stripe account via Stripe Connect. Stripe Checkout handles the booking payment — on success, the server writes the appointment to Supabase and fires confirmation emails via Resend. A Stripe webhook runs in parallel as a safety net for dropped browser sessions, with server-side idempotency to prevent duplicate bookings.

Availability. Each tenant configures per-day availability rules independently — weekday hours and weekend hours can differ entirely. The booking calendar reads these rules and blocks time slots dynamically based on existing appointments.

SEO. Title, description, and Open Graph tags are assembled from the database and injected server-side. Search engines see complete metadata with no JavaScript dependency. All business contact data is rendered server-side so crawlers index real information.

Analytics & Monitoring

For every live client I personally set up and configure Google Analytics, Microsoft Clarity, Google Search Console, and uptime monitoring. Shipping is the start — I review the data and make changes to copy, layout, and SEO based on what real users actually do on the site.

Google Analytics

Traffic, acquisition channels, and behavior. Used to see which pages convert and where visitors drop off.

Microsoft Clarity

Session recordings and heatmaps. Layout and CTA changes come from what Clarity shows about how real users actually interact with the page.

Google Search Console

Keyword impressions, click-through rates, and indexing status. Page titles and meta descriptions are tuned based on what search traffic responds to.

Uptime Monitoring

Live sites are watched for downtime. Alerts fire before the client notices an issue.

Live Deployments

Every deployment below runs on the same API and database, differentiated by tenant context.

The Hard Part

Building for real clients exposed every assumption. The spec phase caught the easy cases. Real clients exposed edge cases the spec never would — a practitioner whose schedule is evenings-only on weekdays and fully open on weekends; services that aren't single offerings but variants with independent pricing and duration; gift card balances that need to be partially applied and the remainder charged via Stripe. Every one of those required going back to the data model and rebuilding, not patching.

Multi-tenancy from the start. Adding tenant resolution as middleware on day one meant every feature was automatically multi-tenant as I built it. It cost a day upfront and saved many hours later — a single booking fix, SEO update, or email template change applies to every deployment immediately.

Need a website for your business? I take on select freelance web projects.

Let's talk →