# Phase 0 - Groundwork and Dev Environment Duration: 1-2 weeks Primary owner: Founder + coding assistant ## 1. Objective Build a stable base so feature work can move fast without breaking: - all required accounts are created - local stack boots reliably - repo structure and standards are in place - CI checks run on every pull request ## 2. Prerequisites - Read `docs/kalei-getting-started.md` - Read `docs/kalei-system-architecture-plan.md` ## 3. Outcomes By the end of Phase 0 you will have: - local Postgres and Redis running via Docker - mobile app bootstrapped with Expo - API service bootstrapped with Fastify - initial DB migration system in place - lint, format, and test commands working - CI pipeline validating every PR ## 4. Deep Work Breakdown ## 4.1 Access and Account Setup Task list: 1. Set up Gitea (self-hosted or managed) for source control and CI. 2. Set up open-weight model serving accounts and endpoints (Ollama local, vLLM target host). 3. Create GlitchTip project for API and mobile error tracking. 4. Create PostHog self-hosted project for product analytics. 5. Set up DNS (PowerDNS self-hosted or managed DNS provider) and add domain. 6. Confirm Apple Developer and Google Play Console access (required for app distribution). Deliverables: - shared credential inventory (local secure password manager) - documented secret naming convention ## 4.2 Repository and Branching Standards Task list: 1. Define branch policy: `main`, short-lived feature branches. 2. Define PR checklist template. 3. Add CODEOWNERS or at least reviewer policy. 4. Add issue templates for bug and feature requests. Deliverables: - `CONTRIBUTING.md` - `.gitea/pull_request_template.md` (or repository PR template equivalent) - `.gitea/ISSUE_TEMPLATE/*` (or repository issue template equivalent) ## 4.3 Local Development Environment Task list: 1. Install and verify Git, Node, npm, Docker, Expo CLI. 2. Add Docker compose for Postgres + Redis. 3. Create `.env.example` for API and mobile. 4. Add one-command local start script. Deliverables: - `infra/docker/docker-compose.yml` - `services/api/.env.example` - `apps/mobile/.env.example` - root `Makefile` or npm scripts for local startup ## 4.4 API and Mobile Skeletons Task list: 1. Create Fastify app with health endpoint. 2. Create Expo app with tabs template. 3. Add API client module to mobile app. 4. Show backend health status in app. Deliverables: - API running on local port - mobile app able to read API response ## 4.5 Data and Migration Baseline Task list: 1. Choose migration tool (for example, `node-pg-migrate`, `drizzle`, or `knex`). 2. Create first migration set for identity tables. 3. Add migration run and rollback commands. 4. Add seed command for local dev data. Minimum initial tables: - users - profiles - auth_sessions - refresh_tokens ## 4.6 Quality and Automation Baseline Task list: 1. Add ESLint + Prettier for API and mobile. 2. Add API unit test framework and one integration test. 3. Configure Gitea Actions (or Woodpecker CI) for lint + test. 4. Add commit hooks (optional but recommended) using `husky`. Deliverables: - passing CI on every push/PR - at least one passing API integration test ## 5. Suggested Day-by-Day Plan Day 1: - account setup - tooling install - repo folder scaffold Day 2: - docker compose and env files - API skeleton with `/health` Day 3: - Expo app setup - mobile to API health call Day 4: - migration tooling and first migrations - baseline seed script Day 5: - linting and tests - CI setup - first stable baseline commit ## 6. Validation Checklist All items must be true: - `docker compose` starts Postgres and Redis with no errors. - API starts and `GET /health` returns 200. - Mobile app loads and displays backend health. - Migrations can run on clean DB and rollback at least one step. - CI runs lint and tests successfully. ## 7. Exit Criteria You can exit Phase 0 when: - no manual setup surprises remain for a fresh machine - all team members can run the stack locally in under 30 minutes - baseline quality checks are automated ## 8. Platform exceptions These are not open source, but required for shipping mobile apps: - Apple App Store tooling and APIs - Google Play tooling and APIs ## 9. Typical Pitfalls and Fixes - Pitfall: unclear `.env` expectations. - Fix: complete `.env.example` files with comments. - Pitfall: mobile app cannot reach local API on real device. - Fix: use machine LAN IP, not localhost, for device testing. - Pitfall: migration drift. - Fix: never edit applied migration files; create a new migration.