- Language demos live under
java/,java-auth/,node/,go/,python/,ruby-api/,csharp/,php/; infrastructure samples sit inargo/,aws/,nginx/,xml/. - Each service keeps app code in its root or
server/folder with a localMakefile, README, and optionalclient/helpers for Speedscale capture. - Shared tooling at the repo root (
Makefile,VERSION, common manifests) coordinates builds, versioning, and release automation.
- Run
make helpfrom the root to list aggregated build/test targets and confirm the active version. - Build artifacts via
make build-java,make build-java-auth,make build-node,make build-php, or the umbrellamake build-all. - Java Auth flows:
cd java-auth && make local(requires MySQL),make test(JUnit),make client(token smoke test). Java server mirrors this withcd java && make localormake compose. - Go, Node, Python, and PHP demos run with
go run main.go,npm install && npm start,python app.py, andcomposer install && php -S localhost:8080 index.phpafter installing language dependencies.
- Go code must remain
gofmt/goimportsclean; house tests in*_test.gofiles and rungo test ./.... - Java sources live in
server/src/main/javawith 4-space indentation and CamelCase classes; tests belong inserver/src/test/javaand run throughmake test-java*. - Node services use ES modules, 2-space indentation, and minimal semicolons; add or update Jest smoke tests in
npm test. - Python, Ruby, and PHP demos stick to snake_case files and language-standard linting; add pytest, RSpec, or PHPUnit checks near the modified code.
- Reuse bundled clients (
java-auth/client,java/client,ruby-api/client) to capture Speedscale traffic and store fixtures alongside the code they validate.
- Write imperative commit subjects with ticket references when available (
Standardize all Docker image tags to use v prefix (#87)). Keep PRs scoped to one service, summarizing behavior changes and the local build/test commands you executed. - Version management is Makefile-driven. Never edit
VERSION, manifests,pom.xml, orpackage.jsonby hand. Instead run:make bump-versionfor the next patch (automatically increments from 1.2.1 → 1.2.2).make update-version VERSION=x.y.zfor a planned release (e.g.,make update-version VERSION=2.0.0).make validate-versionto ensure manifests, Maven, and Node packages align with the VERSION file.
- After version changes, commit every touched file (including the VERSION file and all generated manifests) and mention the command sequence in the PR description (e.g., "Ran
make bump-versionto update to v1.2.2"). Finalize releases withmake release VERSION=x.y.z, then push the branch and the annotatedvVERSIONtag once checks pass. - Important: Always use
make bump-versionormake update-versionfrom the repository root. These commands update VERSION, Kubernetes manifests (includingscenarios/microservices/k8s/gateway.yaml), Maven pom.xml files, and Node package.json files (includingscenarios/microservices/gateway/package.json) in a single operation to maintain consistency across the entire demo repository.