Getting Started
Everything you need to set up a local development environment for Frequency.
Prerequisites
Node.js 24+
Check: node -v
pnpm 9+
corepack enable && corepack prepare pnpm@latest —activate
Supabase CLI
brew install supabase/tap/supabase
Claude Code CLI
For AI-assisted development with /freq agents
Clone & Install
# Clone with submodules (includes AI Drivers)
git clone --recurse-submodules https://github.com/FrequencyAds/frequency-sites.git
cd frequency-sites
# Install all workspace dependencies
pnpm installEnvironment Setup
Each app needs its own .env.local with Supabase credentials. All apps in the monorepo share the same Supabase project:
cp .env.example apps/private/standards/.env.local
cp .env.example apps/private/template-private/.env.local
cp .env.example apps/public/brand/.env.localEdit each .env.local and add your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-keyNote:
.env.localfiles should be identical across apps unless there’s a specific reason to differ. Next.js loads.env.localfrom the app directory, not the monorepo root — so each app needs its own copy.
Run a Dev Server
# Run a specific app
pnpm dev --filter=@frequencyads/standards
# Or use the convenience scripts
pnpm template-private # Private template
pnpm template-public # Public template
pnpm template-brand # Brand site
# Run ALL apps simultaneously
pnpm devVerify Your Setup
# Type-check all packages (runs via Turborepo)
pnpm type-check
# Lint all packages
pnpm lint
# Full production build
pnpm buildIf all three commands pass, your environment is correctly configured.
Development Workflow
- Create a branch for your work
- Run the dev server for the app you’re working on
- Make changes — the dev server hot-reloads
- Type-check with
pnpm type-checkbefore committing - Commit — pre-commit hooks (Husky + lint-staged) run lint + format automatically
- Push — pre-push hooks run type-check
- Open a PR — quality gates (VALIDITUS, GATED) run automatically
Adding a New App
To create a new documentation site in the monorepo:
- Copy a template:
cp -r apps/private/template-private apps/private/my-app - Update
package.json— changenameto@frequencyads/my-app - Update
src/app/layout.tsx— change metadata (title, description) - Update
src/app/navbar.tsx— change branding text - Copy
.env.localfrom an existing app - Run
pnpm installfrom the monorepo root - Start development:
pnpm dev --filter=@frequencyads/my-app
Each new app gets its own Vercel project for deployment. See Deployment.
Troubleshooting
MantineProvider was not found
Multiple copies of @mantine/core are installed (version mismatch). Fix by cleaning and reinstalling:
rm -rf node_modules apps/*/node_modules packages/*/node_modules pnpm-lock.yaml
pnpm installAuth redirect loop
Check that your .env.local has the correct Supabase URL and anon key matching your Supabase project.
Missing component styles
Make sure @frequencyads/components/style.css is imported in your root layout.tsx:
import '@frequencyads/components/style.css';pnpm install fails
- Ensure Node 24+:
node --version - Enable corepack:
corepack enable - Clear caches:
pnpm store prune && rm -rf node_modules && pnpm install
Next Steps
- Read Architecture to understand the monorepo and shared packages
- Review UI & Design before building your first component
- Check AI Development to set up
/freqagents