Demo Project Overview
garland-demo is a reference project that shows what a real Garland test suite looks like end-to-end. It is not a toy — it covers a realistic microservice architecture with authentication, async event propagation, and read-model projections.
Download DemoSystem architecture #
┌─────────────────────────────┐
│ user-service :8080 │
│ │
HTTP client ─────► │ /api/users PostgreSQL │
│ /api/orders (userdb) │
│ /api/auth │
└─────────────┬────────────────┘
│
Kafka topics:
user.created / user.updated / user.deleted
order.placed / order.cancelled
│
┌─────────────▼──────────────────┐
│ projection-service :8081 │
│ │
│ /api/projections MongoDB │
│ (projectiondb) │
└─────────────────────────────────┘user-service owns the write side: it persists users and orders to PostgreSQL and publishes domain events to Kafka after every mutation.
projection-service owns the read side: it consumes those events and builds denormalized documents in MongoDB that the UI would query.
The test suite covers both services. Tests target the system from the outside — no mocks, no internal state, no direct database setup through the application layer.
What’s in the suite #
- Users domain — a complete reference test suite: endpoint tests, flow tests, component tests, and end-to-end tests. This is the domain to read and learn from.
- Orders domain — the API and services are fully implemented but no tests exist. This is intentional — it is the blank canvas for generating tests with Claude Code.
- Example classes — one file per Garland client (
PostgresExamples,KafkaExamples,MongoExamples,HttpExamples), each containing one test per API method with inline explanations.
Explore further #
- How to Run Tests — start infrastructure, run the full suite, run individual classes
- How to Generate Tests — generate tests for the orders domain using Claude Code
- Test layers — how the suite is structured across endpoint, flow, component, and end-to-end tests
- Support layer — factories, mappers, shared base test, and connection config
There are no articles to list here yet.