T Creative Studio
A production SaaS platform replacing 5+ fragmented tools for a multi-vertical creative business
Overview
Role
Solo Engineer
Team
Solo
Timeline
Jul 2025 – Jan 2026
Replaced five fragmented tools (Square POS, Zoho CRM, Google Sheets, Instagram DMs) with a single platform for a multi-vertical creative business after evaluating GlossGenius, Vagaro, and Acuity.
The Problem
Situation
T Creative Studio LLC is a multi-vertical creative business in San Jose, CA spanning lash extensions and skin treatments, permanent jewelry welding, handmade crochet goods and 3D printing, and HR/business consulting. The owner (Trini Lam, Kevin Lam's sister) was running operations across a patchwork of disconnected tools—multiple Instagram accounts for DMs, Excel spreadsheets for client tracking, Zoho for CRM, Square for payments, and marketplace apps (GlossGenius, Vagaro, Booksy) for booking. No single platform supported her multi-vertical pricing models: duration-based lash appointments with deposits, walk-in jewelry welding, e-commerce with shipping, and hourly consulting invoicing. I designed and engineered a production SaaS platform from scratch to replace all of it.
My Goal
Design and engineer a single unified application to consolidate booking, payments, loyalty, messaging, e-commerce, CRM, and compliance for T Creative Studio LLC — replacing GlossGenius, Vagaro, Square marketplace apps, Zoho, and Instagram DMs with one owned system that serves real clients and processes real payments.
My Approach
Designed a 40-table Postgres schema organized by business domain (booking, payments, loyalty, messaging, commerce, CRM, compliance, operations) using Drizzle ORM with 35 tracked migrations — all monetary values stored in cents to avoid floating-point errors
Built a multi-vertical booking system supporting duration-based lash appointments with deposits, walk-in jewelry welding, e-commerce with EasyPost multi-carrier shipping, and hourly consulting invoices — each vertical with its own pricing model and booking flow
Implemented a double-entry loyalty points ledger (balance = SUM of transactions, never a denormalized counter) with admin-configurable reward catalog and a waitlist system using one-time UUID claim tokens with 24-hour auto-expiry
Integrated Square SDK v44 for webhook-driven payment reconciliation: order created at booking confirmation, Square payment.completed webhook auto-links payment, awards loyalty points, sends receipt via Resend, records in Zoho Books, and purchases EasyPost shipping label — all in one HMAC-verified handler
Built a unified inbox with Supabase Realtime for multi-channel messaging (internal, email, SMS via Twilio), replacing fragmented DMs across multiple Instagram accounts
Designed a consistent integration pattern across 9 external services: singleton client module, isXConfigured() guard for graceful degradation, sync_log table for audit trailing — app boots fully even when individual integrations are unconfigured
Implemented defense-in-depth security: Supabase RLS at the database layer, CSP + HSTS + X-Frame-Options headers, HMAC-SHA256 webhook signature verification, Cloudflare Turnstile bot protection on all public forms, JWT tokens for waiver signing links
Shipped 39 transactional email templates as React components (Resend + React Email), 128 test files across Vitest and Playwright E2E, and 6 engineering reference documents including a disaster recovery runbook
The Outcome
Replaced five fragmented tools (Square POS, Zoho CRM, Google Sheets, Instagram DMs) with a single platform for a multi-vertical creative business after evaluating GlossGenius, Vagaro, and Acuity.
Eliminated double-bookings with PostgreSQL advisory locks per staff member and prevented gift-card double-spend with row-level locking and CHECK constraints.
Automated 19 workflows (booking reminders, lash fill reminders, membership renewals, daily flash reports, low-stock alerts) via Inngest with per-item retry, replacing ~8–10 hours/week of manual DMs and spreadsheet checks.
Built three role-scoped dashboards (owner, staff, client) with revenue forecasting, commissions, and self-serve booking — plus a database-driven admin layer so the owner edits all site content and pricing without code.
Shipped a CI pipeline (typecheck, migration validation via testcontainers, Vitest, Playwright E2E) with S3 nightly backups and a documented recovery runbook.
Technical Decisions
Why I chose X over Y
Key Trade-offs
Every decision has costs
Challenges & Solutions
The hardest problems I solved
What I Learned
- →Advisory locks are the correct mechanism for range-based overlap checks, not unique constraints.
- →Defense in depth (proxy + server actions + RLS) is worth the development overhead for financial platforms.
- →Non-fatal side effects (try* pattern) prevent cascading failures from blocking user-visible operations.
- →Split booking actions into mutations/queries/side-effects early — organic growth creates large files.
- →testcontainers for migration validation in CI catches schema issues before production.
Future Plans
- +Native mobile app (React Native + Expo) so Trini can manage bookings and view the dashboard on-device without a browser
- +Multi-location support for studio expansion — current schema is single-tenant but designed to extend with a locations table and location-scoped RLS policies
- +AI-powered scheduling optimization to suggest optimal appointment slots based on historical booking patterns and service duration data
- +SAML/SSO integration for enterprise consulting clients who need to authenticate via their own identity provider
Next project
OpportunIQ
Want to discuss this project?