server/serializers library

JSON DTOs the dashboard consumes.

Kept here, not on the ARB model, so the wire shape can evolve independently of the on-disk shape. The dashboard's REST API contract lives in docs/architecture.md § REST API.

Functions

configJson(DialectProject project) Map<String, Object?>
GET /api/config payload.
glossaryJson(Glossary glossary) Map<String, Object?>
GET /api/glossary payload.
statusJson(DialectProject project) Map<String, Object?>
GET /api/status payload. Reuses the M6 computeStatus math so the dashboard footer and the dialect status CLI agree byte-for-byte.
stringsJson(DialectProject project, String locale) Map<String, Object?>
GET /api/strings?locale=<loc> payload — every source key with the matching translation value + metadata. Keys that have no entry in the requested locale's ARB are still listed with translation: null and missing: true.