-
Notifications
You must be signed in to change notification settings - Fork 0
api contract shapes
Douwe de Vries edited this page Jul 2, 2026
·
1 revision
Contract shapes define the JSON and command payloads shared by Rust and TypeScript. They keep backend workflows, browser mode, desktop mode, and frontend state aligned.
| Contract | Rust source | TypeScript source |
|---|---|---|
| File load response | src/presentation/responses.rs |
frontend/src/types/api.ts |
| Mapping request/response |
src/backend/requests.rs, src/presentation/responses.rs
|
frontend/src/types/api.ts |
| Compare request/response |
src/backend/requests.rs, src/presentation/responses.rs
|
frontend/src/types/api.ts |
| Pair-order selection | src/backend/requests.rs |
frontend/src/types/api.ts |
| Snapshot load response | src/backend/requests.rs |
frontend/src/types/api.ts |
| Error body | src/backend/error.rs |
frontend/src/services/http.ts, frontend/src/services/tauri.ts
|
Rust uses serde snake_case for most wire fields. Frontend types in frontend/src/types/api.ts mirror those names rather than converting them to camelCase. This keeps transport helpers simple and reduces accidental field drift.
| File | Purpose |
|---|---|
src/backend/requests.rs |
Request DTOs and validation errors. |
src/presentation/responses.rs |
Response DTOs and conversions. |
src/backend/error.rs |
Error DTO shape and status mapping. |
frontend/src/types/api.ts |
Frontend wire types. |
tests/response_contracts.rs |
Contract regression tests. |
For user-facing results, see comparison results.