Skip to content

features

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

Features

Active contributors: Douwe de Vries

Purpose

This section maps CSV Align's product capabilities to the code that implements them. The core workflow is to load File A and File B, choose row keys, choose comparison columns, optionally auto-pair confident column matches, run the comparison, inspect/filter/search results, export CSV or HTML, and save either a pair order or a completed comparison snapshot.

Related architecture pages:

Directory layout

Feature behavior spans the shared Rust backend, the React workflow, and the desktop/web transports.

Area Source paths
Backend workflow orchestration /Users/vriesd/projects/csv-align/src/backend/workflow.rs, /Users/vriesd/projects/csv-align/src/backend/validation.rs
Comparison engine /Users/vriesd/projects/csv-align/src/comparison/engine.rs, /Users/vriesd/projects/csv-align/src/comparison/rows.rs, /Users/vriesd/projects/csv-align/src/comparison/value_compare.rs
Mapping suggestions and auto-pair /Users/vriesd/projects/csv-align/src/comparison/mapping.rs, /Users/vriesd/projects/csv-align/frontend/src/features/mapping/autoPair.ts
Frontend workflow state /Users/vriesd/projects/csv-align/frontend/src/hooks/useComparisonWorkflow.ts, /Users/vriesd/projects/csv-align/frontend/src/hooks/useComparisonWorkflow.reducer.ts
Results presentation and export /Users/vriesd/projects/csv-align/frontend/src/features/results/presentation.ts, /Users/vriesd/projects/csv-align/src/data/export.rs
Saved work /Users/vriesd/projects/csv-align/src/backend/pair_order.rs, /Users/vriesd/projects/csv-align/src/backend/comparison_snapshot.rs, /Users/vriesd/projects/csv-align/src/backend/persistence/v1/mod.rs

Key abstractions

  • Auto-pairing fills confident one-to-one comparison column pairs after users choose row keys.
  • Flexible row-key matching optionally allows ** wildcard and shared-token key matches.
  • Saved work separates setup reuse through pair-order files from read-only completed result reloads through comparison snapshots.
  • Results and export covers summaries, filters, search, detail panels, CSV export, and HTML export.
  • Core domain primitives documents CsvData, SessionData, ComparisonConfig, and RowComparisonResult.

How it works

  1. The UI creates a backend session through /Users/vriesd/projects/csv-align/frontend/src/services/tauri.ts.
  2. File loads call the shared backend workflow in /Users/vriesd/projects/csv-align/src/backend/workflow.rs, which parses CSV data, detects columns, discovers virtual labels, and stores File A/File B in SessionData.
  3. Mapping suggestions are refreshed once both files are present. The backend returns one-to-one suggestions, while the frontend auto-pair helper decides which suggestions are confident enough to apply automatically.
  4. The compare action sends selected keys, comparison columns, mappings, and normalization settings as a CompareRequest.
  5. The backend validates selections, builds ComparisonConfig, runs the comparison engine, stores results if the session inputs are still current, and returns response DTOs.
  6. The frontend renders summary cards, filters, searchable/sortable results, detail panels, and export actions from the returned response.

Integration points

  • Browser mode reaches the backend through HTTP routes described by API.
  • Desktop mode reaches the same backend through Tauri commands in /Users/vriesd/projects/csv-align/src-tauri/src/commands.rs.
  • Transport parity depends on /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/src/api/app.rs, and /Users/vriesd/projects/csv-align/src-tauri/src/main.rs.
  • Results and saved-work features reuse shared DTOs from /Users/vriesd/projects/csv-align/src/presentation/responses.rs and /Users/vriesd/projects/csv-align/frontend/src/types/api.ts.

Entry points for modification

  • Change compare behavior in /Users/vriesd/projects/csv-align/src/comparison/engine.rs and cover it in /Users/vriesd/projects/csv-align/tests/comparison_engine_integration.rs.
  • Change request validation in /Users/vriesd/projects/csv-align/src/backend/validation.rs.
  • Change workflow state transitions in /Users/vriesd/projects/csv-align/frontend/src/hooks/useComparisonWorkflow.reducer.ts.
  • Change UI actions in /Users/vriesd/projects/csv-align/frontend/src/hooks/useWorkflowComparisonActions.ts or /Users/vriesd/projects/csv-align/frontend/src/hooks/useWorkflowPersistenceActions.ts.
  • Change persisted formats in /Users/vriesd/projects/csv-align/src/backend/pair_order.rs or /Users/vriesd/projects/csv-align/src/backend/persistence/v1/mod.rs.

Key source files

File Purpose
/Users/vriesd/projects/csv-align/src/backend/workflow.rs Shared feature workflow for loading files, suggesting mappings, comparing, exporting, and saved work.
/Users/vriesd/projects/csv-align/src/comparison/engine.rs Core row matching, result generation, and summary generation.
/Users/vriesd/projects/csv-align/frontend/src/hooks/useComparisonWorkflow.ts React workflow facade used by the app.
/Users/vriesd/projects/csv-align/frontend/src/hooks/useComparisonWorkflow.reducer.ts State transitions for file load, comparison, snapshot load, pair-order load, filters, and reset.
/Users/vriesd/projects/csv-align/frontend/src/components/ResultsTable.tsx Main interactive result table.

Clone this wiki locally