This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a DigitalOcean-specific adaptation of Google's Online Boutique microservices demo application. It consists of 12+ microservices written in Go, Python, Java, Node.js, and C# that communicate over gRPC, designed to showcase DOKS (DigitalOcean Kubernetes Service) and Database-as-a-Service integrations.
src/- Individual microservice implementationshelm/- Helm chart for Kubernetes deploymentdev/- Development configuration valuesscratch/- Temporary/scratch files
- Go: frontend, checkoutservice, productcatalogservice, shippingservice
- Java: adservice (Gradle-based)
- C#: cartservice (.NET 9.0)
- Node.js: currencyservice, paymentservice
- Python: emailservice, recommendationservice, loadgenerator, shoppingassistantservice
- adservice requires PostgreSQL database
- cartservice requires Valkey/Redis database
- frontend serves the web UI and orchestrates other services
- loadgenerator simulates realistic user traffic
The application supports two deployment modes via Helm:
- Development mode (
devDeployment: true): Uses in-cluster PostgreSQL and Valkey from Bitnami subcharts - Production mode (
devDeployment: false): Requires external managed database connections via ConfigMaps and Secrets
# Deploy in development mode
helm install demo oci://ghcr.io/do-solutions/microservices-demo \
--namespace boutique --create-namespace
# Deploy with custom values
helm install demo oci://ghcr.io/do-solutions/microservices-demo \
--namespace boutique --create-namespace \
-f dev/values.yaml
# Package Helm chart locally
helm package ./helm --version <version> --app-version <tag>
# Get frontend external IP
kubectl get svc frontend-external -n boutique -o jsonpath='{.status.loadBalancer.ingress[0].ip}'# Java (adservice)
cd src/adservice && ./gradlew build
# C# (cartservice)
cd src/cartservice && dotnet build
# Go services (multiple)
cd src/<service> && go build
# Node.js services
cd src/<service> && npm install
# Python services
cd src/<service> && pip install -r requirements.txt# Java tests
cd src/adservice && ./gradlew test
# C# tests
cd src/cartservice && dotnet test
# Go tests (where available)
cd src/<service> && go test ./...The repository uses GitHub Actions with a unified build system:
- All services are built and tagged with the same version (
v1.YYYYMMDD.HHMMSSfff) - Docker images are published to GitHub Container Registry (GHCR)
- Helm chart is packaged and pushed as an OCI artifact
- Workflow triggers on changes to
src/**orhelm/**on themainbranch
For production deployments, create these Kubernetes resources before deployment:
- ConfigMap:
adservice-database-configurationwith DB connection details - Secret:
adservice-databasewithpostgres-passwordkey
- Secret:
cartservice-databasewithconnectionStringkey
All service images are available at:
ghcr.io/do-solutions/microservices-demo-<service>:<tag>
Services are containerized with optimized Dockerfiles in each service directory.