This document explains the new project organization and how to navigate it.
compose/ → For local development with Docker Compose
kubernetes/ → For production-like K8s deployment (k3d)
shared/ → Used by both (router config + subgraphs)
For: Quick local development and testing Time: ~1-2 minutes to start Complexity: Low
cd docker-compose
./start.sh # Start services
./status.sh # Check status
./stop.sh # Stop servicesWhat's included:
- Apollo Router (port 4000)
- 4 Subgraphs (ports 4001-4004)
- PostgreSQL (port 5432)
Documentation: docker-compose/README.md
For: Production-like evaluation with Dash0 observability Time: ~5-10 minutes to setup Complexity: Medium
cd kubernetes
./start.sh # Initialize cluster
./status.sh # Check cluster status
./stop.sh # Tear down clusterWhat's included:
- Full k3d Kubernetes cluster
- CloudNativePG replicated PostgreSQL
- Dash0 operator with auto-instrumentation
- Helm-deployed Apollo Router
- All observability features
Documentation: kubernetes/README-DEPLOYMENT.md
Both deployment paths use the same:
- Router configuration:
shared/router/router.yaml - Supergraph schema:
shared/router/supergraph.graphql - All subgraph code:
shared/subgraphs/
This ensures consistency across deployments and eliminates code duplication.
start.sh- Shows deployment optionsstop.sh- Shows deployment optionsstatus.sh- Shows deployment options
.env- Environment variables (shared by both paths).env.sample- Template with all options
docker-compose.yaml- Includes website and bot (for Willful Waste demo)
README.md- Main project overviewMIGRATION.md- Explains what changedSTRUCTURE.md- This fileCLAUDE.md- AI assistant guidelines
| Purpose | Location |
|---|---|
| Compose Setup | compose/ |
| Kubernetes Setup | kubernetes/ |
| Router Config | shared/router/router.yaml |
| Supergraph Schema | shared/router/supergraph.graphql |
| Subgraph Source | shared/subgraphs/*/ |
| K8s Manifests | kubernetes/base/ |
| Helm Values | kubernetes/helm-values/ |
| K8s Scripts | kubernetes/scripts/ |
| Dashboards | dashboards/ |
| Documentation | docs/ |
| Infrastructure | terraform/ |
- Edit
shared/router/router.yaml - Docker Compose: Auto-loads on restart
- Kubernetes: Requires ConfigMap update
cd kubernetes ./scripts/update-configmap.sh ./scripts/redeploy-router.sh
- Edit code in
shared/subgraphs/<subgraph>/ - Docker Compose:
docker compose up -d --build <subgraph>
- Kubernetes:
cd kubernetes ./scripts/rebuild-and-reimport-images.sh
- Create directory:
shared/subgraphs/<new-subgraph>/ - Implement Federation GraphQL service
- Docker Compose: Add service to
docker-compose/docker-compose.yaml - Kubernetes: Create manifest in
kubernetes/base/subgraphs/
All variables in .env are shared and used by both paths:
DASH0_AUTH_TOKEN- For observabilityDASH0_DATASET- Dash0 dataset IDDASH0_REGION- Dash0 region (us, eu)- Etc.
- Clarity: Users immediately know which to choose
- Simplicity: No complex conditionals in scripts
- Maintainability: Each path has focused documentation
- Flexibility: Can evolve independently
- DRY: Single source of truth for router and subgraphs
- Consistency: Same code runs in both environments
- Efficiency: No duplication to maintain
- Website Demo: Willful Waste retail demo needs it
- Backwards Compatibility: Existing scripts reference it
- Convenience: Easy for full-featured testing
# Stop one
cd docker-compose && ./stop.sh
# Start another
cd kubernetes && ./start.sh# Docker Compose
docker-compose logs -f router
# Kubernetes
kubectl logs -f deployment/apollo-router -n apollo-dash0-demo# Docker Compose
psql -h localhost -U inventory_user -d inventory_db
# Kubernetes
./kubernetes/scripts/manage-postgres.sh connect- Quick testing: Use Docker Compose (
compose/) - Production evaluation: Use Kubernetes (
kubernetes/) - Full demo with website: Use root
docker-compose.yaml
- Compose: Services auto-reload on file changes, or restart manually
- Kubernetes: ConfigMaps need explicit updates via scripts
Stop all services:
compose/./stop.sh
kubernetes/./stop.sh
docker compose down- Project README - Overview and quick start
- Migration Guide - What changed and why
- Compose Docs - Docker Compose details
- Kubernetes Docs - K8s deployment guide