Skip to content

Onboarding

Onboarding

Everything you need to go from zero to a merged first PR. This page is a hub — it links to the canonical docs rather than restating them, so follow the links.

1. The system: three repos, one product

RepoSurfaceURLStack
surfc/The app (PWA)app.surfc.appReact + Vite + Dexie + Supabase
surfc/ (docs/)Public helphelp.surfc.appVitePress
surfc-web/Marketing sitesurfc.appAstro (static)
surfc-intranet/This wiki + adminintranet.surfc.appAstro + Starlight

The three repos are siblings (clone them next to each other). The wiki you’re reading documents code in surfc/ and surfc-web/ — those files are not in surfc-intranet/.

2. Local dev quickstart

Clone the repos you’ll work in side by side, then for each:

surfc/ — the app

Terminal window
git clone <surfc-remote> && cd surfc
npm install
cp .env.example .env # fill in Supabase + PostHog values (see §3)
npm run dev # → http://localhost:5173

Node 20+ is fine for surfc/ (no .nvmrc; CI uses Node 20). Docker is required only for the Postgres test harness (npm run db:start).

surfc-web/ — marketing

Terminal window
git clone <surfc-web-remote> && cd surfc-web
nvm use # Node 22 (.nvmrc)
npm install
cp .env.example .env.local # PUBLIC_* values (see §3)
npm run dev # → http://localhost:4321

surfc-intranet/ — this wiki + admin

Terminal window
git clone <surfc-intranet-remote> && cd surfc-intranet
nvm use # Node 22 (.nvmrc)
npm install
npm run dev # → http://localhost:4321

No .env and no test/lint scripts here — npm run build is the only verification gate (it validates Starlight frontmatter and Astro templates).

3. Cloud access checklist

You’ll need access to these services. Ask the Product Owner (Deji) to grant each, then collect the listed values into your local env files.

ServiceWhyWhat you needWhere it’s documented
SupabaseDB, auth, storage, Edge FunctionsProject URL + anon key (client); service-role key + DATABASE_URL (local tooling)Supabase setup runbook
CloudflarePages hosting + Zero Trust Access (live) to this intranetYour email added to the intranet.surfc.app Access allowlistCI/CD & Deployment (Access control)
PostHogProduct analytics (EU host)Project token + host (https://eu.i.posthog.com); a Personal API key is only needed for the admin stats workSupabase setup runbook (env table)
ResendTransactional email via Supabase SMTPNo local value — RESEND_API_KEY is a Supabase Edge Function secret onlyCI/CD & Deployment (Edge Functions)
LinearIssue tracking (SUR- prefix)Workspace invite + GitHub integration linkedLinear setup

Edge Function secrets (Anthropic, Stripe, Azure, Resend, PostHog server keys) are set in the Supabase dashboard, never in a local .env — see CI/CD & Deployment.

4. Your first PR

Read How We Work first — it defines the 7-step workflow loop (Issue → Branch → Implementation → PR → Review → Deploy → Close) and the branching/release rules. The short version:

  1. Pick up a Linear issue and move it to In Progress (see Linear setup for the issue workflow).
  2. Branch off main — never commit to main directly. Naming: feat/..., fix/..., chore/..., docs/... (issue-scoped branches like dejidipeolu/sur-287-... are also common).
  3. Commit in logical units using Conventional Commits (feat(scope): …, fix(scope): …, etc.); reference the ticket in the footer, e.g. [SUR-287].
  4. Before you call it done: run npm run build and confirm zero errors (in surfc/, also run npm run test:db if you touched supabase/**). Make sure .env is not staged.
  5. Push and open a PR using the template — what changed, why, how to test, open questions — and link the Linear issue. Merging to main auto-deploys (see CI/CD & Deployment).

Make your first PR a small, low-risk change to learn the loop before taking on feature work.

5. Where to find things

You want…Go to
The apphttps://app.surfc.app
Marketing sitehttps://surfc.app
Public help articleshttps://help.surfc.app
This wikihttps://intranet.surfc.app/wiki/
The admin dashboardhttps://intranet.surfc.app/admin/
How deploys workCI/CD & Deployment
The workflow loop & rolesHow We Work
ArchitectureSystem Architecture
Per-repo conventionseach repo’s CLAUDE.md and CONTRIBUTING.md

Welcome aboard.