Modular web application template
Monorepo using pnpm workspace:
- apps/user-application - TanStack Start consumer-facing app
- apps/data-service - Backend service for long-running tasks
- packages/data-ops - Shared DB layer (schemas, queries, auth)
Stack: Better Auth, Drizzle ORM, Cloudflare Workers, Neon Postgres.
pnpm run setupInstalls all dependencies and builds data-ops package.
pnpm run dev:user-application # TanStack Start app (port 3000)
pnpm run dev:data-service # Hono backend service (port 8788)From packages/data-ops/ directory:
pnpm run drizzle:dev:generate # Generate migration
pnpm run drizzle:dev:migrate # Apply to databaseReplace dev with staging or production.
packages/data-ops/—.env.dev,.env.staging,.env.production(see .env.example)apps/user-application/—.envfiles per Vite modeapps/data-service/—.dev.vars(local), Cloudflare dashboard (remote)
pnpm run test # run all tests
pnpm run test:watch # watch mode
pnpm run test:coverage # with coverage reportUses Vitest with workspace projects. Each package can also run tests independently via pnpm --filter <package> test.
pnpm run deploy:staging:user-application
pnpm run deploy:staging:data-service
pnpm run deploy:production:user-application
pnpm run deploy:production:data-serviceSecrets sync: bash apps/{app}/sync-secrets.sh {env}
To deploy to a different CF account, copy .env.example to .env and fill in CLOUDFLARE_ACCOUNT_ID + CLOUDFLARE_API_TOKEN.
Each package has its own AGENTS.md with detailed structure, patterns, and workflows (CLAUDE.md symlinks to AGENTS.md).
Planning skills (brainstormer) are pre-configured via extraKnownMarketplaces and enabledPlugins in .claude/settings.json. They install automatically on first open.
To update to the latest brainstormer skills:
/plugin marketplace update brainstormer