Installation
Local development runs with no provider credentials. There is nothing secret to copy between machines.
Prerequisites
Two things, and neither is a credential:
- nvm, so
nvm usepicks up the Node version in.nvmrc— the same one both machines and CI run. - git, authenticated.
gh auth loginis simplest: it handles HTTPS pushes with no SSH key to manage.
You do not need a Cloudflare login, a Resend account, or a database.
Setup
git clone https://github.com/measham/Sitefold.git
cd Sitefold
nvm use
npm install
cp .dev.vars.example .dev.vars
npm run devOpen http://127.0.0.1:3000. That is the whole setup.
Two things happen for you: predev copies the Astro WASM compiler into public/, and SITEFOLD_DB_MIGRATION_MODE=auto means the local database creates and migrates itself on first start.
Looking at things
The dashboard is behind a login, so these routes exist to inspect surfaces directly without one:
/libraryThe component library — this documentation/dev/builderThe builder shell/dev/cmsThe CMS, on its green accent/dev/settingsProject settings (?section=seo for a section)Why no secrets are needed
AUTH_SECRETfalls back to a development secret locally. Production refuses to start a session without a real one.RESEND_API_KEYis optional. Without it, email falls back to a driver that logs the message — including the link — so signup, verification and password reset can be followed end to end with no Resend account.
Copy RESEND_API_KEY and SITEFOLD_EMAIL_FROM across only if you want that machine sending real email — and move them through a password manager, never through chat or email.
Before you push
The same four checks CI runs:
npx tsc --noEmit
npm run lint
npm test
npm run design:baselineUse design:baseline, not design:audit. The audit exits non-zero at its known raw-value baseline, so it always looks like a failure. The baseline script holds the zero-tolerance categories at zero and the raw-value debt at its budget — see Working with tokens.
Pushing to main deploys. There is normally no reason to run wrangler yourself.