-
Notifications
You must be signed in to change notification settings - Fork 0
api
Active contributors: Douwe de Vries
CSV Align has two app-facing contract surfaces over the same shared backend workflows:
- Browser mode calls Axum HTTP routes under
/api/*. - Desktop mode calls Tauri commands registered in
tauri::generate_handler![...].
The contract is intentionally parallel. /Users/vriesd/projects/csv-align/frontend/src/services/tauri.ts exposes one frontend service API and switches between route builders from /Users/vriesd/projects/csv-align/frontend/src/services/apiRoutes.ts and command names from /Users/vriesd/projects/csv-align/frontend/src/services/tauriCommands.ts.
| Layer | Browser mode | Desktop mode | Shared source |
|---|---|---|---|
| Transport constants | /Users/vriesd/projects/csv-align/frontend/src/services/apiRoutes.ts |
/Users/vriesd/projects/csv-align/frontend/src/services/tauriCommands.ts |
/Users/vriesd/projects/csv-align/frontend/src/services/tauri.ts |
| Rust entry surface |
/Users/vriesd/projects/csv-align/src/api/app.rs and /Users/vriesd/projects/csv-align/src/api/handlers.rs
|
/Users/vriesd/projects/csv-align/src-tauri/src/main.rs and /Users/vriesd/projects/csv-align/src-tauri/src/commands.rs
|
/Users/vriesd/projects/csv-align/src/backend/workflow.rs |
| Request models | JSON bodies, multipart CSV uploads, and path parameters |
invoke(...) payloads and native dialog selections |
/Users/vriesd/projects/csv-align/src/backend/requests.rs |
| Response models | JSON responses and download attachments | Serialized command return values and native file writes | /Users/vriesd/projects/csv-align/src/presentation/responses.rs |
Every frontend operation should have matching browser and desktop behavior unless the runtime needs a different user interaction. Examples:
- Browser CSV loading posts
FormData; desktop CSV loading passes selected file bytes toload_csv_bytes. - Browser exports return
Blobobjects; desktop exports open native save dialogs and write files. - Pair-order and comparison snapshot save/load use HTTP attachments or JSON in browser mode, and native dialogs in desktop mode.
- Session, mapping, and comparison request/response shapes come from the same backend structs.
Parity is covered by tests listed in /Users/vriesd/projects/csv-align/AGENTS.md, especially /Users/vriesd/projects/csv-align/tests/transport_parity_integration.rs and /Users/vriesd/projects/csv-align/src-tauri/src/tests.rs.
| File | Purpose |
|---|---|
/Users/vriesd/projects/csv-align/frontend/src/services/tauri.ts |
Frontend service API and runtime transport switch. |
/Users/vriesd/projects/csv-align/frontend/src/services/apiRoutes.ts |
HTTP route templates used by browser mode. |
/Users/vriesd/projects/csv-align/frontend/src/services/tauriCommands.ts |
Tauri command-name constants used by desktop mode. |
/Users/vriesd/projects/csv-align/frontend/src/types/api.ts |
Frontend TypeScript API contract types. |
/Users/vriesd/projects/csv-align/src/api/app.rs |
HTTP route constants and route registration. |
/Users/vriesd/projects/csv-align/src/api/handlers.rs |
HTTP request handlers and attachment responses. |
/Users/vriesd/projects/csv-align/src-tauri/src/main.rs |
Tauri command registration list. |
/Users/vriesd/projects/csv-align/src-tauri/src/commands.rs |
Tauri command implementations. |
/Users/vriesd/projects/csv-align/src/backend/requests.rs |
Shared Rust request and persistence DTOs. |
/Users/vriesd/projects/csv-align/src/presentation/responses.rs |
Shared Rust response DTOs. |