AKA Solutions · Platform Strategy

The Mission

Living doc

A course-website factory

One engine, many isolated products

Launch certification & training course sites where the first product is built once, and every product after takes a fraction of the effort — without sharing a runtime or a blast radius.

ELDT HQ is product #1 · fork a base template per product, fully isolated

The big picture in three sentences

Each product is its own repo, own deployment, own database — fully isolated, so a bug or an AI agent working on one site can never touch another. Most of what a course site needs lives in a base template repo that each product forks into its own independent copy — no shared dependency. Services like Stripe, Neon, and Vercel run through one shared account each, but every product gets its own isolated resource inside — so the only thing you truly buy per product is a domain.

01 — Design principles

five rules everything follows from
1
Isolation by default

One product = one repo, one Vercel project, one database. No shared runtime. The blast radius of any change is exactly one product.

2
Build the base once

Most of the engine lives in a base template repo with a clean core / product seam. New products fork it — they don't rebuild it from scratch.

3
A product is data, not code

Cloning a product means filling in a config file + curriculum, not copy-pasting an app. Branding, pricing, and rules are configuration.

4
Shared accounts, isolated resources

One login and one bill per service. Inside each, every product gets its own walled-off resource. You buy only a domain per product.

5
Changes stay local

Forks are fully independent. Most fixes are product-specific; a rare shared fix is an optional git cherry-pick, never a forced fleet-wide change.

02 — The model

fork the base, deploy independently
Base template repo

the thing you fork from

core/quizzes · progress · certs · webhook
product/config · curriculum · brand
ELDT HQ Live

7 courses + FMCSA TPR reporting

app.eldthq.com
FL Boating

boating curriculum + NASBLA report

floridaboatingcourse.com
Food Handler

food-safety curriculum · no reporting

yourfoodhandler.com

03 — Shared accounts, isolated resources

one bill per service, walls inside
ServiceShared accountIsolated per product
VercelOne Pro team (one bill)One project per product — separate env vars & deploys
Neon PostgresOne accountOne database per product — data never mixes
StripeOne accountOwn Products/Prices; webhook routed per project
Clerk (auth)One org / free tierOne instance per product — clean, separate user pools
Resend (email)One accountA verified sending domain per brand
Mux (video)One accountAttached only to products that enable video
CloudflareOne accountDNS + registrar for every domain

04 — Cost model

roughly flat across the fleet

Whole portfolio

$20–60/mo

Per product

~$10/yr

Cost of product #5

≈ $0 extra

Bottom line: roughly $20–60/month for the entire portfolio at low traffic, plus ~$10/yr per domain — the one true per-product cost. Adding product #5 barely moves the bill.

05 — Start here: the first moves

phase one = a clean engine/template split
  1. 1
    Set up the AKA umbrella accountsCreate the shared team/org on Vercel, Neon, Stripe, Clerk, Resend, and Cloudflare under AKA Solutions. This is the central-account foundation.
  2. 2
    Draw the core / product seam in ELDTSort each module into core (generic engine) or product (ELDT-only). Reorganize into core/ and product/ folders so the boundary is physical, not just mental.
  3. 3
    Generalize ELDT into the base templatePull ELDT-specific bits behind a config file and a ReportingProvider interface with a NoopProvider default. ELDT stays as the working reference build.
  4. 4
    Freeze it as the fork pointAdd brand-asset placeholders and .env.example, write the checklist into the README, and tag a clean baseline. This repo is now what every product forks from.
  5. 5
    Fork for product #2 and time itPick the next course, fork, fill in config + curriculum, provision its isolated Neon DB + Clerk instance, and deploy. Every rough edge becomes a fix to the base.

06 — “New product in a day” checklist

once the engine exists
  • Buy the domain (Cloudflare registrar) and point DNS at Vercel
  • Fork the base template repo (keep the upstream remote for future cherry-picks)
  • Fill in config: brand, colors, logo, domain, feature flags
  • Add the curriculum — MDX lessons + quiz seed data
  • Create the product's Stripe Prices; paste the IDs into config
  • Provision isolated resources: new Neon database + Clerk instance
  • Pick the reporting provider (a real one, or NoopProvider)
  • Choose marketing: in-template pages, or a WordPress landing
  • Deploy, migrate + seed, smoke-test purchase → lesson → quiz → cert
  • Go live and add the site to monitoring

AKA Solutions LLC — Platform Architecture & Build Strategy · base template repo → independent forks · isolated repo / deploy / database per product.