Skip to content

Personal product domain

When to update: Personal app scaffolding, auth changes, or new personal-only data stores.

The personal product line covers individual life management: vehicles, finance, fitness, and journaling. It runs on the personal isolation plane — separate Worker, D1, R2, KV, and auth from business.

  • Business organizations, invoicing, payroll, or scheduling
  • Shared auth with business or marketing
  • TigerBeetle or ledger transfers
  • Enterprise tenant provisioning (Workers for Platforms)
AreaPathStatus
Web SPAapps/personal-web/Auth UI, protected routes
API Workerapps/personal-api/Magic-link auth, sessions, GET /me
Auth modulesapps/personal-api/src/auth/Sessions, magic links, middleware
Crypto packagepackages/crypto/Versioned algorithms; PQC via mlkem-wasm
Migrationsapps/personal-api/db/migrations/users, sessions, magic_link_tokens
packages/crypto/Plane-agnostic crypto agility (hash, AEAD, ML-KEM, session HMAC)
packages/ui/App shell, nav, core components

Personal D1 (personal-db): users (plaintext + encrypted email columns during migration), sessions, magic_link_tokens, vehicles, finance accounts/transactions, fitness workouts, journal entries. Attachments in R2 (personal-assets).

Session cache, magic-link rate limits, and ML-KEM keypair cache use KV (personal-sessions).

Every query is scoped by user_id (single-user tenancy).

  1. Never read or write business D1, R2, KV, or auth secrets
  2. Session cookies use personal-specific names on personal.* subdomains
  3. No org_id — personal data is user-scoped only