Full-stack product · Launched & live

Human Design
for Black Women

A content, commerce, membership, and AI reading platform — built end to end by one person, and operated by one person.

humandesignforblackwomen.com
Product architectureFull-stack buildBrand & design systemAI engineeringCommerceContent opsFounder tooling

Schema, RLS, server functions, SSR, routing, design system, content, SEO, email, payments, AI, observability, and the admin cockpit. No handoffs, no contractors.

Client
Self-initiated venture
My role
Designer, architect, and builder
Status
Live and operating
Team size
One
44Systems shipped

Every layer below was designed, built, and put into production by me. Nothing was outsourced, and nothing is a template.

Product & strategy

  1. 01Product architecture across 114 routesPublic marketing, member dashboards, admin cockpit, API and webhook endpoints, MCP transport
  2. 02Revenue architectureTwo subscription tiers, a daily micro-subscription, one-time reports, bundles, mentorship funnel, academy
  3. 03Entitlement model spanning charts, lessons, memberships, and credits
  4. 04Pricing ladder from free chart to $497 bundle

The chart experience

  1. 05Free bodygraph calculator with load-bearing input validation
  2. 06Chart Hub — three progressive tiers on one continuous scroll
  3. 07Chart provider abstraction across two external APIsHD Hub and Roxy, normalized behind one layer with A/B diff validation
  4. 08Server-side cache with domain-specific TTLs
  5. 09Dream Rave — the sleeping half of the bodygraph
  6. 10Connection by Design — two-person compatibility
  7. 11Family Energy Map
  8. 12Align Me Daily — daily reading tuned to your chart
  9. 13Personalized printable workbook

AI & the reading engine

  1. 14Reading engine with a single entry pointKinds declare endpoints; the engine fans out, caches, and interprets
  2. 15Interpretation cache keyed on product and input hash
  3. 1613 report products, each with schema, generator, and renderer
  4. 17Zod schemas constraining every AI output
  5. 18Model tiering — fast model for quick reads, deep model for long-form
  6. 19Brand-voice preamble applied to every generation
  7. 20Monthly member credit redemption

Guided Rooms

  1. 2110 modality experiences, each with modality-native UXNumerology, Horoscope, Moon, Tarot, I Ching, Biorhythm, Dream Rave, Dream Decoder, Cycle Analysis, Crystals
  2. 22Live ephemeris integration across all ten
  3. 23Crystal library with chakra, zodiac, element, hardness, and pairings
  4. 24Animated interactions — tarot shuffle, coin cast, staged reveals

Platform architecture

  1. 25SSR React on Cloudflare Workers
  2. 2655 Postgres migrations
  3. 27Row-level security on every public table
  4. 28Privilege model isolated in a separate roles tableSecurity-definer function gates every check — a hard invariant against escalation
  5. 29Typed server-function RPC with auth middleware
  6. 30Postgres-native email queue that self-idlespgmq plus pg_cron, advisory-lock serialized, zero background workers
  7. 31Typed React email templates rendered server-side
  8. 32Error capture table and admin health surface

Commerce & membership

  1. 33Stripe Checkout for one-time and subscription products
  2. 34Signature-verified webhook handler with timing-safe compare
  3. 35Entitlement reconciliation and delivery email dispatch
  4. 36Bundle SKUs that fan out into child entitlements
  5. 37Apothecary — a nine-shelf catalog of every product on the site
  6. 38Academy with cascading course, module, and lesson access

Content operations

  1. 39In-house visual editorEvery text node, image, and background editable inline by admins, with draft and publish
  2. 40Admin media manager across 19 wired slots
  3. 41Foundations library — Types, Authorities, Profiles, Centers, Definitions, Channels, Gates
  4. 42Editorial system — articles, podcast, and three content verticals
  5. 43Six downloadable free resources plus capture funnel

Founder tooling

  1. 44Private MCP server exposing ~55 business toolsMembers, purchases, fulfillment, audiences, article drafts, analytics, system health — the whole business, operable from a chat window
01

The brief

Human Design tools already existed. Every one of them was built for a general audience, priced as a one-time report, and written in a register that lost people in the first thirty seconds.

The audience I was building for — Black women using Human Design as a framework for self-discovery, business, relationships, motherhood, and healing — was not underserved by a lack of calculators. They were underserved by a lack of interpretation, and by a market that treated the chart as the product.

The chart was never the product. The interpretation was, and interpretation is a publishing business wearing a software costume.

Media slot1400 × 875 · homepage, brand-forward
02

What it actually is

This is the part that gets undersold when a build like this is described as "a site." It is a working ecosystem with four businesses inside it — editorial, e-commerce, membership, and an AI reading engine — sharing one identity, one entitlement model, and one admin surface.

The free layer is real, not a teaser. A full bodygraph calculator, an entire foundations library, six downloadable guides, and an editorial archive across articles, podcast, business, and life. People can get value and leave. Most of them come back.

  • Free entry — chart calculator, foundations library, resource hub, editorial
  • Chart Hub — three progressive paid tiers on one scroll
  • Reports — 13 AI-generated products from quick reads to bundles
  • Guided Rooms — 10 modality experiences behind a subscription
  • Membership — two tiers, a stackable daily add-on, mentorship, academy
  • Apothecary — a nine-shelf catalog where every product lives
  • The Journal — a digital workbook with a gated AI reflection layer
Media slot1400 × 875 · foundations library + editorial
03

The chart experience

Chart Hub is the flagship. Rather than three separate products with three separate checkouts, it is one continuous scroll that deepens as you pay — you can see the shape of what you do not have yet, in context, right where it would sit.

Underneath, two external APIs are normalized behind a single provider layer, cached server-side with different lifetimes for different kinds of data — six hours for static reference, thirty minutes for transits, a day for images. A secret picks the active source, and a diff helper validates one provider against the other.

The customer never learns which API they are using. That is the point of a provider layer.

Media slot1400 × 875 · Chart Hub scroll, all three tiers
04

The reading engine

Thirteen AI report products could have been thirteen prompt files and a prayer. Instead there is one engine with one entry point. A product declares which data endpoints it needs; the engine fans out, caches the raw payloads, and hands them to an interpretation layer.

That layer hashes the product and the input summary, checks the cache, and only calls a model if nothing is there. Repeat reads never re-hit the model. For time-sensitive products the hash carries a daily bucket, so a daily reading is generated once per day rather than once per visitor.

  • Schema-constrained output — every product has a Zod schema the model must satisfy
  • Model tiered to task — the fast model for quick reads, the deep model for long-form
  • One generator per product — the prompt lives next to the schema, not in a shared blob
  • One renderer per product — structured JSON becomes a branded page, never raw text

Cache before you generate. It is the difference between an AI feature that has a margin and one that has a bill.

Media slot1400 × 875 · a generated report, rendered
05

Data & entitlements

Fifty-five migrations, row-level security on every public table, and explicit grants after every table creation — because the data API does not hand those out by default and a missing grant is a silent outage.

The invariant I care most about: roles never live on the profile record. They live in their own table behind a security-definer function, and every privilege check routes through it. The service-role client is imported dynamically inside handlers that have already confirmed the caller is an admin — it is never used to establish that fact.

  • Chart entitlements — per chart, per product, with expiry
  • Lesson entitlements — cascading across course, module, and lesson
  • Membership status — tier checks as composable functions
  • Member credits — monthly report redemption, consumed atomically
Media slot1400 × 875 · schema diagram or table view
06

Guided Rooms

Ten modality experiences, each one built to feel native to its own tradition rather than like a tab in a dashboard. Tarot shuffles. I Ching casts coins. The Moon room reads void-of-course. Every room carries a "where this meets Human Design" callout so the ecosystem stays coherent instead of turning into a bundle of unrelated widgets.

07

The visual editor

Over a hundred pages of copy, and no CMS worth the integration cost. So I built one into the site.

An admin toggles edit mode and every heading, paragraph, list item, quote, link, and button on the page becomes clickable. Changes autosave as a draft, scoped to that page. Publish flips draft to live. Visitors only ever see live.

The design decision that made it useful: it is opt-out, not opt-in. A global component auto-wraps every text node rather than requiring someone to mark up each one by hand. Images and section backgrounds get the same treatment — swap the media, set a gradient, add an overlay, all inline.

Nobody should need an engineer to fix a typo. On a hundred-page site, that is not a convenience — it is the difference between content that stays current and content that rots.

Media slot1400 × 875 · edit mode, inline editor open
08

The cockpit

This is the piece that makes the rest of it survivable. A private MCP server exposing around fifty-five tools, bearer-authenticated and CORS-locked, that lets me run the entire business from a chat window.

  • Daily pulse — today's business, pending actions, revenue summary, digest
  • Intelligence — member journeys, churn signals, content performance, cohort analysis
  • Members — lookup, subscriptions, tier changes, entitlement grants
  • Fulfillment — snapshot requests, reports, support messages, applications
  • Audience — contacts, segments, broadcasts, campaign stats
  • Content — article drafts, with publishing behind an explicit confirmation
  • System health — payment sync checks, email delivery, failed-send retry

The cockpit is the difference between a site and a business one person can actually run.

Media slot1400 × 875 · MCP cockpit in use
09

Design system

Spiritual software has a default look — purple gradients, star fields, gold foil — and it reads cheap to the exact audience I was building for. I went the opposite direction: cream and ivory grounds, plum text, a single gold accent, editorial serifs for display.

Motion is used where arrival matters. Hero reveals, the tarot shuffle, the coin cast, staged reveals as a reading assembles. A component layer of primitives is wrapped in composites specific to this product, so a new product page is composed rather than designed.

One motif ties the whole thing together: a single animated marquee under the hero that carries every modality across the screen. One visual thread instead of ten disconnected room cards.

10

Decisions that held

The calls that are not obvious from the outside, and that I would make again:

  • Two kinds of server code, two locations. Internal reads and writes go through typed RPC scoped to the caller's permissions. Webhooks, cron, and MCP live in file routes. Different guarantees deserve different homes.
  • Never run a protected function in a public loader. Server rendering has no session. Protected loaders live behind the auth gate; public routes fetch them client-side.
  • Cache before you generate. No model call happens without a cache lookup first.
  • The city string is load-bearing. The chart API silently ignores coordinates and timezone and only reads the city name — so front-end validation forces a dropdown pick. A quiet failure in someone else's API becomes a hard requirement in mine.
  • The email queue self-idles. The scheduled job unschedules itself when both queues are empty and re-arms on the next enqueue. No worker sits burning money waiting for nothing.
  • Roles never leave their table. Every privilege check routes through one function. The admin client acts, it never authorizes.

By the numbers

114Routes in the application
55Database migrations in production
13AI report products, each with schema, generator, and renderer
1Person running all of it
~55MCP tools
10Guided Rooms
19Managed media slots
9Catalog shelves
6Free resources
4Membership levels
3Chart tiers, one scroll
2APIs behind one layer

Built with

Application

TanStack StartReact 19Vite 7Cloudflare WorkersTypeScript

Data & infrastructure

SupabasePostgresRow-level securitypgmqpg_cron

Interface

Tailwind v4shadcn/uiFramer Motion

Services & AI

StripeBrevoRoxy APIHD Hub APIGemini 2.5 Pro / 3 FlashMCP

Selected screens

What this proves I can do

If you need something at this scale, this is the reference build.

  • Ship a real launched productNot a demo. Payments, subscriptions, entitlements, cached AI, a custom CMS, an email pipeline, and an admin cockpit — in production, with customers.
  • Own the entire stackSchema to RLS to server functions to SSR to routing to design system to content to SEO to email to payments to AI to observability.
  • Design brand-firstA distinctive palette, deliberate motion, and one visual motif carried across a hundred pages without drifting.
  • Build AI that is cheap and durableCache first, schema-constrained output, one prompt per product, model tiered to the task.
  • Model access correctlySeparate roles table, security-definer checks, cascading course access, and atomic credit consumption.
  • Build for a solo operatorThe cockpit is why one person can run a business with this much surface area.