Skip to content

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.json provides 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.

Internal Handbook