Skip to content

how to contribute development workflow

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

Development workflow

Use this page for the normal branch, code, test, and PR cycle. For validation details, see testing. For project patterns, see patterns and conventions.

Branch and code cycle

  1. Start from the current main branch and inspect the working tree before changing files.
  2. Create a focused branch for one fix or feature.
  3. Read the relevant Rust, Tauri, frontend, or script files before editing.
  4. Keep shared behavior in /Users/vriesd/projects/csv-align/src/backend/, /Users/vriesd/projects/csv-align/src/comparison/, or /Users/vriesd/projects/csv-align/src/data/ instead of duplicating it in a transport layer.
  5. Update tests in the matching layer as you change behavior.
  6. Run the validators in testing.
  7. Open a PR with a concise description of the behavior change, validation run, and any release impact.

Local web development

The web app served by cargo run requires a built frontend first. The Rust server does not build /Users/vriesd/projects/csv-align/frontend/dist for you.

(cd /Users/vriesd/projects/csv-align/frontend && npm install)
(cd /Users/vriesd/projects/csv-align/frontend && npm run build)
cargo run --manifest-path /Users/vriesd/projects/csv-align/Cargo.toml

Then open http://127.0.0.1:3001.

For frontend-only iteration, use Vite:

cd /Users/vriesd/projects/csv-align/frontend && npm run dev

The production web server entry point is /Users/vriesd/projects/csv-align/src/main.rs, and the frontend dist lookup is implemented in /Users/vriesd/projects/csv-align/src/api/app.rs.

Local desktop development

Install frontend dependencies first, then run Tauri:

(cd /Users/vriesd/projects/csv-align/frontend && npm install)
cargo install tauri-cli --locked --version "^2"
(cd /Users/vriesd/projects/csv-align && cargo tauri dev)

/Users/vriesd/projects/csv-align/src-tauri/tauri.conf.json runs cd frontend && npm run dev before desktop dev startup. Desktop commands live in /Users/vriesd/projects/csv-align/src-tauri/src/commands.rs, and command registration lives in /Users/vriesd/projects/csv-align/src-tauri/src/main.rs.

Transport parity cycle

When adding, renaming, or removing a frontend transport operation:

  1. Update HTTP route constants in /Users/vriesd/projects/csv-align/src/api/app.rs.
  2. Update frontend route builders in /Users/vriesd/projects/csv-align/frontend/src/services/apiRoutes.ts.
  3. Update Tauri command constants in /Users/vriesd/projects/csv-align/frontend/src/services/tauriCommands.ts.
  4. Add or update the command implementation in /Users/vriesd/projects/csv-align/src-tauri/src/commands.rs.
  5. Register the command in /Users/vriesd/projects/csv-align/src-tauri/src/main.rs.
  6. Extend parity tests in /Users/vriesd/projects/csv-align/tests/transport_parity_integration.rs and /Users/vriesd/projects/csv-align/src-tauri/src/tests.rs.

Release caution

Do not bump versions during normal feature work. Real release prep must update all version-bearing files, add a /Users/vriesd/projects/csv-align/CHANGELOG.md section with the exact ## vX.Y.Z - YYYY-MM-DD heading, and run /Users/vriesd/projects/csv-align/scripts/check_release_metadata.py.

Release work should follow /Users/vriesd/projects/csv-align/docs/releasing.md and deployment. The CI and release workflows reuse Linux artifacts, sign Debian and APT repository outputs, and publish macOS DMGs, so a release change can affect more than application code.

Key source files

File Purpose
/Users/vriesd/projects/csv-align/src/main.rs Local web server startup on 127.0.0.1:3001.
/Users/vriesd/projects/csv-align/src/api/app.rs API routes, body limits, and frontend dist lookup.
/Users/vriesd/projects/csv-align/frontend/src/services/tauri.ts Runtime transport switch.
/Users/vriesd/projects/csv-align/frontend/src/services/apiRoutes.ts Browser route templates.
/Users/vriesd/projects/csv-align/frontend/src/services/tauriCommands.ts Tauri command names used by the frontend.
/Users/vriesd/projects/csv-align/src-tauri/src/commands.rs Desktop command implementations.
/Users/vriesd/projects/csv-align/src-tauri/src/main.rs Desktop command registration.
/Users/vriesd/projects/csv-align/docs/releasing.md Release process and signing prerequisites.

Clone this wiki locally