Quick Start
Quick Start
Follow these steps on your own machine. Budget 10–15 minutes if you already have a Supabase account.
Requirements
- Node.js 24.x LTS (not 25)
- pnpm 10.x
- A hosted Supabase project (free tier is enough)
- Git, to clone the repository
Docker is not required. The app talks to hosted Supabase.
Install
- Clone the repository and open that folder in a terminal.
nvm use(this repo pins 24.13.0 in.nvmrc) or install Node 24 another way. Confirm withnode -v.- Enable pnpm 10 if you do not have it:
corepack enablethencorepack prepare pnpm@10.34.5 --activate. pnpm install- In your terminal (it opens a browser):
pnpm supabase login pnpm supabase:setup— creates or reuses a ClientNest project, pushes migrations, and writes.env.local(URL + anon key only).- If you already have several Supabase projects, set the ref first, then re-run setup:
``bash # PowerShell $env:SUPABASE_PROJECT_REF='your-ref' $env:SUPABASE_DB_PASSWORD='your-db-password' pnpm supabase:setup ``
- Optional Harbor Studio demo users:
pnpm supabase:seed - Optional demo files (hero image, menu PDF, tokens):
pnpm demo:files pnpm dev- Open http://localhost:3000
- Create an account at
/signup, or sign in with a demo user from the table below if you seeded. - New accounts land on
/onboardingto name the workspace. That first user is the owner. - Invite a teammate or client from
/app/team. They open/invite/<token>and must use the invited email. - Confirm the Auth redirect URLs if you will deploy (see Supabase setup).
Demo logins (after seed)
Password for every Harbor user: Harbor-Demo-24
| Role | What to look at | |
|---|---|---|
sam.reed@example.com | Owner | Clients, files, request approval, invoices, settings |
riley.chen@example.com | Member | Team-only files stay hidden from the client |
alex.marin@example.com | Client | Seasonal menu site, Homepage hero v3, INV-2026-0041 |
Never use these emails for a real client. They are fictional @example.com identities.
What “done” looks like
/appshows workspace stats, not an empty onboarding loop- An owner can create a client and a project
- A client contact sees only assigned projects
- File download works for shared files and 404s for everyone else
If a step fails, use Troubleshooting, then open a GitHub issue.