Skip to content
Douwe de Vries edited this page Jul 1, 2026 · 2 revisions

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.

Contract layers

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

Parity expectations

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 to load_csv_bytes.
  • Browser exports return Blob objects; 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.

Pages

Key source files

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.

Clone this wiki locally