Reference implementations of the same Lamp CRUD API in multiple languages, designed for side-by-side comparison of architecture, tooling, testing, and developer experience.
- 6 language implementations: TypeScript, Python, Java, C#, Go, Kotlin
- REST API implemented across all languages from a shared OpenAPI contract
- Three runtime modes supported (
migrate,serve-only,serve) for CI/CD and production workflows - In-memory and PostgreSQL-backed execution paths are available in the implementations
- GraphQL and gRPC contract files are present in
docs/api/, but runtime implementations are still REST-first
lamp-control-api-reference/
├── src/ # Language implementations
│ ├── typescript/ # Fastify
│ ├── python/ # FastAPI
│ ├── java/ # Spring Boot
│ ├── csharp/ # ASP.NET Core
│ ├── go/ # Chi + oapi-codegen + sqlc
│ └── kotlin/ # Ktor
├── docs/ # Project docs, ADRs, and API contracts
│ └── api/
│ ├── openapi.yaml
│ ├── graphql.graphql
│ └── lamp.proto
├── database/ # SQL and MongoDB schema/setup assets
├── scripts/ # CI/local helper scripts (including mode tests)
└── .github/workflows/ # Per-language CI and metrics workflows
- Pick an implementation in
src/and open its README. - Start infrastructure if needed:
docker-compose up -d postgres
- Run the selected implementation with its local instructions.
- Verify the API with:
GET /healthGET /v1/lamps
For cross-language mode testing, see scripts/README.md and scripts/test-modes-local.sh.
docs/COMPARISON.md: generated metrics and coverage snapshotdocs/OPERATION_MODES.md: mode semantics and deployment patternsdocs/api/openapi.yaml: REST contractdocs/api/graphql.graphql: GraphQL schema contractdocs/api/lamp.proto: gRPC contractCONTRIBUTING.md: contribution and workflow guidelines
Each language has a dedicated CI workflow under .github/workflows/ that validates build/test quality. The repository also includes:
- database schema validation workflow
- SQL linting
- Schemathesis API contract tests
- automated metrics updates
This project is licensed under Apache License 2.0. See LICENSE.