# Phase 0: Project Setup & Foundation ## Overview Initialize repository structure, set up Go modules and basic tooling, create configuration management foundation, and establish CI/CD skeleton. ## Tasks ### 0.1 Repository Bootstrap - [0.1.1 - Initialize Go Module](./0.1.1-initialize-go-module.md) - [0.1.2 - Create Directory Structure](./0.1.2-create-directory-structure.md) - [0.1.3 - Add Gitignore](./0.1.3-add-gitignore.md) - [0.1.4 - Create Initial README](./0.1.4-create-initial-readme.md) ### 0.2 Configuration System - [0.2.1 - Install Configuration Dependencies](./0.2.1-install-config-dependencies.md) - [0.2.2 - Create Config Interface](./0.2.2-create-config-interface.md) - [0.2.3 - Implement Config Loader](./0.2.3-implement-config-loader.md) - [0.2.4 - Create Configuration Files](./0.2.4-create-configuration-files.md) ### 0.3 Logging Foundation - [0.3.1 - Install Logging Dependencies](./0.3.1-install-logging-dependencies.md) - [0.3.2 - Create Logger Interface](./0.3.2-create-logger-interface.md) - Create `pkg/logger/logger.go` interface - [0.3.3 - Implement Zap Logger](./0.3.3-implement-zap-logger.md) - Implement `internal/logger/zap_logger.go` - [0.3.4 - Add Request ID Middleware](./0.3.4-add-request-id-middleware.md) - Create Gin middleware for request IDs ### 0.4 Basic CI/CD Pipeline - [0.4.1 - Create GitHub Actions Workflow](./0.4.1-create-github-actions-workflow.md) - [0.4.2 - Create Makefile](./0.4.2-create-makefile.md) ### 0.5 Dependency Injection Setup - [0.5.1 - Install FX Dependency](./0.5.1-install-fx-dependency.md) - [0.5.2 - Create DI Container](./0.5.2-create-di-container.md) - [0.5.3 - Create Main Entry Point](./0.5.3-create-main-entry-point.md) ## Deliverables Checklist - [ ] Repository structure in place - [ ] Configuration system loads YAML files and env vars - [ ] Structured logging works - [ ] CI pipeline runs linting and builds binary - [ ] Basic DI container initialized ## Acceptance Criteria - `go build ./cmd/platform` succeeds - `go test ./...` runs (even if tests are empty) - CI pipeline passes on empty commit - Config loads from `config/default.yaml`