Your single landing page for the codebase, the stack, what exists, what's planned, and what you own. Written peer-to-peer — no marketing. Read it once end-to-end, then keep it open while you set up.
LaunchPad is a creative marketplace app: clients book photographers, videographers, and editors. The signature feature is LaunchDeck — book up to 5 creatives as a team in one project flow.
The operating constraint that shapes everything: David is on this 3 days a week. Default to compressing decisions, and write so someone who wasn't in the room can understand what happened and why.
Two repos, both on David's machine under ~/Developer/:
| Repo | Path | What it is |
|---|---|---|
| App | ~/Developer/launchpad-2026/ | The React Native / Expo app. TypeScript, Expo Router. The product. |
| OS / Mission Control | ~/Developer/launchpad-os/ | The operating layer — CLAUDE.md, subagents, decision log, the marketing site + founder portal. |
~/Developer/launchpad-os/website/ → deploys to thelaunchpad.app (Netlify). Public landing, waitlist, /investors, Studio surfaces, founder portal under /founders.CLAUDE.md (both repos), package.json, the app/ directory (file-based routes), and supabase/migrations/ for the schema.appVersionSource: remote counts failed attempts, so the artifact landed as Build 5). Build 5 in the roadmap sense — the Revenue Build — is next.Read from the actual package.json and app.json (June 11, 2026). Versions exact.
@supabase/supabase-js ^2.104.1 — backend client@sentry/react-native ~7.2.0 — crash + error monitoring (pinned)@react-navigation/native ^7.1.8, bottom-tabs ^7.4.0, elements ^2.6.3react-native-reanimated ~4.1.1, worklets 0.5.1, gesture-handler ~2.28.0, screens ~4.16.0, safe-area-context ~5.6.0expo-image ~3.0.11, image-picker ~17.0.11, image-manipulator ~14.0.8, base64-arraybuffer ^1.0.2expo-notifications ~0.32.17, expo-device ~8.0.10expo-sqlite ~16.0.10, expo-file-system ~19.0.21react-native-web ~0.21.0, react-dom 19.1.0expo-font (Light → ExtraBold); @expo-google-fonts/dm-sans + playfair-display also presentsupabase/functions/: delete-account, notify-on-thread-event.001_init → 016_featured_content). RLS enabled on every table.cc8953af-73b7-4700-a0ad-e7838e630f46, Expo owner launchpad.app.com.launchpad.app2026. appVersionSource: remote — counts failed build attempts, so the runtime build number runs ahead of the planning name.eas env:list production before every build; the three required prod env vars are NOT inherited from .env.local and must be set via eas env:create.SENTRY_DISABLE_AUTO_UPLOAD=true in eas.json).hello@thelaunchpad.app.Routes are Expo Router file-based under app/ (~59 .tsx files). Major surfaces:
app/(auth)/): entry, sign-in, sign-up, forgot-password, reset-password. PKCE against Supabase.onboarding_step state machine), onboarding-pending, profile-published.[id]; tags, media_type (image/video schema-ready), title; archive + soft-delete lifecycle.creative/[id]), edit, manage portfolio, services/rate cards, multi-image headers.launch_decks + launch_deck_slots, submit RPC, cancel flow.project/[deckId]): hybrid surface — images native, video as branded link.threads.is_team), auto-created team thread on submit, "Awaiting kickoff" header, Team Resources button.notifications) + push (device_tokens + notify-on-thread-event).profiles, services, portfolio_items, posts, post_likes, follows, collections, bookmarks, threads, messages, launch_decks, launch_deck_slots, reviews, project_highlights, project_highlight_collaborators, device_tokens, launchdeck_deliverables, featured_content, notifications. RLS on all. Storage buckets: avatars, portfolio, deliverables.
There is no dedicated bookings/payments table yet. The earnings + Stripe work in Build 5 will need one (or a clear decision to derive earnings from launch_decks + a new payments table). Raise this early — see Section 6.
Zero open bugs. The bug log (bugs/INDEX.md, mirrored on the portal) shows all 11 logged bugs (BUG-001 → BUG-011) as SHIPPED in runtime Build 5. New bugs logged via /log-bug.
11 bug fixes (profile-creation keyboard/loop/back-nav, LaunchDeck team-chat + creative-side visibility, notification-bell prominence, public-profile preview + header carousel, edit-profile save glitch, portfolio back-nav, avatar fallback), the LaunchDeck v2 flow, the hybrid deliverable surface, Team Resources, Sentry re-add, and the Share CTA.
Closed beta, ~30 active users, Providence RI. Distribution via TestFlight; invites managed through Supabase + welcome emails.
Full detail lives in references/launchpad-roadmap.md (the living source of truth). Summary:
Build 5 · Revenue real · June 2026 · Closed beta
Build 6 · Launch ready · Sept 2026 · Public RI launch
Build 7 · Platform smart · Q4 2026 · Algorithm live
Build 8 · Market expansion · Q1 2027 · Boston + Android
Build 9+ · Platform play · 2027+ · Events, enterprise
Two-phase frame: Build to Launch (Builds 5–6) then Build to Scale (Builds 7+). The automated test suite is slotted as a Build 6 priority — raise it earlier if you think it should gate Build 5's payment code (a reasonable argument).
Build 5 is the Revenue Build: make the platform financially real. Eight workstreams. Enough detail to estimate and start planning.
payment_intent.succeeded (+ failure/refund) server-side — Netlify or Supabase Edge Function, secret stays server-side.engagement_events table: event ∈ {view, save, like, profile_visit, booking, scroll_past, search, share, rebook} + user_id, target_id, session_id, duration_ms, timestamp.profiles.style_preferences text[] (fed by onboarding).posts.tags text[] already exists (migration 011) — decide reuse vs. dedicated column.posts.relevance_score float (nullable; feed orders by it; scoring lands in Build 6).style_preferences. Seeds algorithm data from day one. Fits the existing onboarding_step machine.profiles.post_count int. Milestone trigger fires rewards: 5 posts = first badge · 10 = one boost credit · 25 = Founding Creative discount eligibility.invoices table. Create invoice, add line items, send via email (Resend), mark paid. Distinct from platform bookings — covers off-platform work.creative_id. Depends on the bookings/payments table decision in item 1 — sequence accordingly.New tables: engagement_events, invoices, a subscription table, and a bookings/payments table (or a decision to derive). New columns: profiles.style_preferences, profiles.post_count, posts.relevance_score, post style tags. Migrations 017+. Migration-application is currently manual — decide whether supabase db push becomes the ship gate.
Checkout/payment, paywall/subscription, earnings summary, invoice create + list, style-preference onboarding step.
Client profile (broken empty state), onboarding (insert style step), home feed (order by relevance_score), profile (post-count badges).
Stripe (new). Resend (already in use) gains receipt + invoice email templates.
~/Developer/launchpad-os/. CLAUDE.md is the constitution: read it first. Brand rules, routing to specialist subagents, operating cadence. Slash commands automate recurring work (/weekly-brief, /log-decision, /log-bug, /sprint-status, /prospect). The founder portal at thelaunchpad.app/founders is the live dashboard.decisions/ + decisions/INDEX.md. Every architectural decision is logged here. Read it before making a new one — half your "why is it like this" questions are already answered (stack choice, Supabase, server-side credentials via Netlify functions, Sentry, deliverable hosting, equity/veto). New decisions logged via /log-decision. Non-negotiable; the log is the institutional memory.CLAUDE.md — the constitution. Brand is grayscale-only, no emojis anywhere, never publish without David's approval, never fabricate metrics.launchpad-2026 (app) and launchpad-os (OS).CLAUDE.md (both repos) front to back.decisions/INDEX.md chronologically, then open any decision whose "why" you need.cd ~/Developer/launchpad-2026
npm install
# create .env.local from .env.example (David provides values via 1Password, not chat)
npx expo start # dev server
eas env:list production # pre-flight: confirm the 3 prod env vars exist
launchpad-2026 codebase end to end.