# Project Setup Checklist **Use when creating new Grey Haven projects.** ## Initial Setup ### Choose Template - [ ] Frontend: Use cvi-template (TanStack Start + React 19) - [ ] Backend: Use cvi-backend-template (FastAPI + Python) - [ ] Clone from Grey Haven GitHub organization - [ ] Remove .git directory and re-initialize ### Environment Configuration - [ ] Copy .env.example to .env - [ ] Set up Doppler project (dev, test, staging, production) - [ ] Add required secrets to Doppler - [ ] Test Doppler access: `doppler run --config dev -- echo "Working"` - [ ] Add .env to .gitignore (verify) ## Frontend Setup (TanStack Start) ### Directory Structure - [ ] Verify src/routes/ structure (file-based routing) - [ ] Verify src/lib/ organization (components, server, config, etc.) - [ ] Verify public/ for static assets - [ ] Verify migrations/ for Drizzle migrations ### Configuration Files - [ ] Update tsconfig.json (verify ~/* path alias) - [ ] Update package.json (project name, description) - [ ] Verify .prettierrc (90 char line length, double quotes) - [ ] Verify .eslintrc (any allowed, strict off) - [ ] Update commitlint.config.cjs (100 char header) - [ ] Update vite.config.ts (project-specific settings) - [ ] Update vitest.config.ts (coverage thresholds >80%) ### Dependencies - [ ] Run `bun install` (NOT npm!) - [ ] Verify Drizzle ORM installed - [ ] Verify better-auth installed - [ ] Verify TanStack Start/Query/Router installed - [ ] Verify Shadcn UI components ### Database Setup - [ ] Create PostgreSQL database (PlanetScale) - [ ] Add DATABASE_URL to Doppler - [ ] Add DATABASE_URL_ADMIN to Doppler - [ ] Generate initial migration: `bun run db:generate` - [ ] Apply migration: `doppler run --config dev -- bun run db:migrate` ### Authentication - [ ] Configure better-auth in src/lib/server/auth.ts - [ ] Add BETTER_AUTH_SECRET to Doppler - [ ] Add BETTER_AUTH_URL to Doppler - [ ] Set up OAuth providers (if needed) - [ ] Test auth flow locally ## Backend Setup (FastAPI) ### Directory Structure - [ ] Verify app/ structure (routers, services, db, etc.) - [ ] Verify tests/ organization (unit, integration, e2e) - [ ] Verify alembic/ for migrations ### Configuration Files - [ ] Update pyproject.toml (project name, dependencies) - [ ] Verify Ruff configuration (130 char line length) - [ ] Verify mypy configuration (strict type checking) - [ ] Verify pytest configuration (markers, coverage >80%) - [ ] Update alembic.ini (database URL from Doppler) - [ ] Create Taskfile.yml (common commands) ### Dependencies - [ ] Create virtual environment: `python -m venv venv` - [ ] Activate venv: `source venv/bin/activate` - [ ] Install deps: `pip install -r requirements.txt` - [ ] Install dev deps: `pip install -r requirements-dev.txt` - [ ] Verify SQLModel installed - [ ] Verify FastAPI installed - [ ] Verify Alembic installed ### Database Setup - [ ] Create PostgreSQL database (PlanetScale) - [ ] Add DATABASE_URL to Doppler - [ ] Add DATABASE_URL_ADMIN to Doppler - [ ] Generate initial migration: `alembic revision --autogenerate -m "Initial"` - [ ] Apply migration: `doppler run --config dev -- alembic upgrade head` ## GitHub Setup ### Repository - [ ] Create GitHub repository - [ ] Push initial commit - [ ] Set up branch protection rules (main branch) - [ ] Require PR before merging - [ ] Require 1 approval - [ ] Require status checks to pass ### GitHub Actions - [ ] Add DOPPLER_TOKEN to repository secrets - [ ] Add CLOUDFLARE_API_TOKEN to repository secrets (if deploying) - [ ] Verify .github/workflows/ci.yml - [ ] Verify .github/workflows/deploy.yml - [ ] Test CI/CD pipeline ## Testing ### Frontend Testing - [ ] Run unit tests: `bun test` - [ ] Run integration tests: `bun test:integration` - [ ] Run E2E tests: `bun test:e2e` - [ ] Verify coverage >80% ### Backend Testing - [ ] Run unit tests: `pytest -m unit` - [ ] Run integration tests: `pytest -m integration` - [ ] Run E2E tests: `pytest -m e2e` - [ ] Verify coverage >80% ## Documentation ### README.md - [ ] Update project name and description - [ ] Document getting started steps - [ ] Document Doppler setup - [ ] Document database setup - [ ] Document testing commands - [ ] Document deployment process ### Additional Docs - [ ] Create API documentation (if applicable) - [ ] Document architecture decisions - [ ] Document multi-tenant setup - [ ] Create onboarding guide ## Deployment ### Cloudflare Workers (Frontend) - [ ] Create wrangler.toml files (dev, staging, production) - [ ] Create KV namespaces - [ ] Create R2 buckets (if needed) - [ ] Configure custom domains - [ ] Test deployment to staging ### Production Readiness - [ ] Set up monitoring (Sentry, Axiom) - [ ] Configure error tracking - [ ] Set up performance monitoring - [ ] Configure rate limiting - [ ] Set up backup strategy - [ ] Document rollback procedure ## Post-Setup ### Team Onboarding - [ ] Share Doppler access with team - [ ] Share repository access - [ ] Document local setup process - [ ] Schedule team walkthrough ### Maintenance - [ ] Set up dependency update schedule - [ ] Set up security scanning - [ ] Schedule regular code reviews - [ ] Document support procedures