Monorepo for AI-built apps deployed to Cloudflare Workers under haffi.dev.
apps/
mywebsite/ Personal website at haffi.dev
job-agent/ Job application agent at jobs.haffi.dev
next/ Next.js starter at next.haffi.dev
tanstack/ TanStack Start starter at tanstack.haffi.dev
libraries/
shared/ Shared TypeScript package- Node.js 22+
- pnpm 9+
- Cloudflare account with
haffi.devin the account
Install pnpm if needed:
npm install --global pnpm@9.15.4Install dependencies:
pnpm installRun all apps:
pnpm devRun one app:
pnpm --filter @haffi/mywebsite dev
pnpm --filter @haffi/job-agent dev
pnpm --filter @haffi/next dev
pnpm --filter @haffi/tanstack devWrangler is installed as a workspace dependency. After pnpm install, authenticate locally:
pnpm wrangler login
pnpm wrangler whoamiThe app configs define custom domains:
apps/mywebsite/wrangler.jsonc->haffi.devapps/job-agent/wrangler.jsonc->jobs.haffi.devapps/next/wrangler.jsonc->next.haffi.devapps/tanstack/wrangler.jsonc->tanstack.haffi.dev
Deploy locally:
pnpm deploy:mywebsite
pnpm deploy:job-agent
pnpm deploy:next
pnpm deploy:tanstackapps/job-agent also requires D1, R2, and app secrets. See apps/job-agent/README.md for setup.
Pushes to main run .github/workflows/deploy.yml and deploy the apps configured in that workflow.
Add these GitHub repository secrets:
CLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_TOKEN
The API token needs Workers deploy permissions and permission to manage routes/custom domains for haffi.dev.