ADR-0007: Mono-Repo for Multi-Language SDKs
Status: ACCEPTED Date: 2026-03-27 Scope: workspace Supersedes: N/A Superseded by: N/A
Context
The platform's API chain requires SDKs in four languages (Java, PHP, Python, Go) for third-party developers. These SDKs implement the same authentication, signing, and encryption protocols. A decision was needed on whether to maintain separate repos per language or a single mono-repo.
Source: DevPortal design spec (2026-03-27-devportal-design.md, AD-5)
Decision
All API chain SDKs live in a single mono-repo (slaunchx-sdks/) with per-language subdirectories (java/, php/, python/, go/). A shared/ directory contains protocol specifications (signature-spec.md, encryption-spec.md), error code definitions (error-codes.json), and cross-SDK conformance test fixtures (test-vectors.json). The WEB chain TypeScript SDK is excluded from this repo and lives in slaunchx-frontend-web/packages/web-sdk/ because it serves a different audience (internal frontend) and follows the frontend deployment cycle.
Consequences
- Unified versioning: all SDK languages release together, aligned with the backend API version.
- Cross-language conformance testing:
shared/test-vectors.jsonprovides known-input/expected-output fixtures for all cryptographic operations, preventing cross-language signing/encryption divergence. - Single CI pipeline for all SDKs; protocol spec changes are immediately visible to all language implementations.
- Contributors working on one language still clone the entire repo, but language subdirectories are self-contained with their own build files.
Alternatives Considered
- Separate repo per language: Rejected because shared protocol specs would need to be duplicated or submoduled, and conformance test vectors would drift between repos.
- Including the TypeScript WEB SDK: Rejected because the WEB SDK targets internal frontend developers (JWT + Portal Access Code auth), not external API consumers (API Key + HMAC auth), and follows the frontend release cycle.