| # Tech Stack - Cocoon |
| |
| ## Core Technologies |
| * **Primary Language:** Dart (SDK 3.x+) |
| * **Frontend Framework:** Flutter Web (located in `dashboard/`) |
| * **Backend Runtime:** Dart App Engine (Custom Runtime) |
| * `app_dart`: Raw Dart I/O and `package:appengine`. |
| * `auto_submit`: Uses `package:shelf` and `package:shelf_router`. |
| * **Infrastructure:** Google Cloud Platform (GCP) |
| * **App Engine (Flexible):** Hosting for both backend services. |
| * **Cloud Build:** CI/CD for deploying Cocoon services. |
| * **Pub/Sub:** Messaging for decoupling GitHub webhooks and LUCI build updates. |
| * **Secret Manager:** Management of sensitive keys (GitHub tokens, webhook secrets). |
| * **Memorystore (Redis):** Caching layer using `package:neat_cache`. |
| |
| ## Data Storage & Analytics |
| * **Cloud Firestore:** Primary NoSQL database for tracking commits, tasks, and tree status. |
| * **BigQuery:** Data warehouse for CI metrics, performance tracking, and historical analysis. |
| |
| ## External Integrations |
| * **GitHub API:** Interaction with GitHub via `package:github` and raw GraphQL queries for PR management and Checks API. |
| * **LUCI (Layered Universal Continuous Integration):** gRPC/REST interaction to schedule and monitor builds via the BuildBucket API (using `packages/buildbucket-dart`). |
| |
| ## Project Architecture |
| * **Monorepo Structure:** Managed as a Dart Workspace. |
| * `app_dart/`: Main CI orchestrator and backend API. |
| * `auto_submit/`: Automated PR management bot. |
| * `dashboard/`: Flutter Web frontend. |
| * `packages/`: Shared libraries and internal SDKs (`cocoon_common`, `buildbucket-dart`). |
| * **Code Generation:** |
| * `build_runner` for `json_serializable` (DTOs/Database models). |
| * `package:protobuf` for internal configuration (`.ci.yaml`) and BuildBucket interactions. |