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.