Skip to content

Repository files navigation

SheetCompare

See what changed.

Local-first CSV/TSV comparison in your browser.

"Files are processed locally in your browser."

CI


What It Does

SheetCompare is a focused tabular diffing tool. Drop two versions of a CSV or TSV file, select a primary key column, and immediately inspect cell-level additions, removals, and modifications without uploading data to external servers.


Why Local-First

  • Privacy by Architecture: All parsing, matching, and cell-diff computations occur strictly inside your local browser runtime.
  • No Data Ingestion: Zero backend servers, databases, third-party analytics, or telemetry.
  • Zero Configuration: No account creation, login, or cloud credentials required.

Quick Start

# Clone the repository
git clone https://github.com/debother/SheetCompare.git
cd SheetCompare

# Install dependencies
npm install

# Start local development server
npm run dev

Open http://localhost:5173 in your browser.


Current MVP Features

  • Dual File Dropzone: Drag-and-drop or select File A (baseline) and File B (updated).
  • Delimiter Detection: Automatic detection for commas (,), tabs (\t), semicolons (;), and pipes (|).
  • Primary Key Matching: Automatic detection of common columns to match rows across versions.
  • Row Change Classification:
    • 🟢 Added: Rows newly present in File B.
    • 🔴 Removed: Rows present in File A but absent in File B.
    • 🟡 Changed: Rows with modified cell values.
    • Unchanged: Identical rows.
  • Cell-Level Diff: Visual old value → new value delta inspection.
  • Filter & Search: Instant filtering by status and text query across all columns.
  • Diff Export: Copy or download diff reports in GitHub-flavored Markdown table format or annotated CSV.
  • Strict Error Handling: Explicit errors for duplicate primary keys, empty files, missing headers, and schema mismatches.

Supported Formats

  • Comma-Separated Values (.csv)
  • Tab-Separated Values (.tsv)
  • Plain text delimiter-separated files (.txt)

Known Limitations

  • Single Primary Key: Composite keys (multi-column keys) are not currently supported.
  • Text-Only Tabular Formats: Proprietary spreadsheet formats (.xlsx, .xls) and document formats (.pdf) are intentionally excluded.
  • In-Memory Scale: Designed for datasets that fit comfortably in browser RAM (up to tens of thousands of rows).
  • Deterministic Exact Matching: Keys are matched by exact string comparison; fuzzy matching is omitted to guarantee accuracy.

Development

# Start development server with hot module reload
npm run dev

# Run TypeScript compilation and production build
npm run build

# Preview production build locally
npm run preview

Tests

# Run Vitest test suite once
npm test -- --run

# Run test suite in watch mode
npm test

Privacy

SheetCompare is built so file contents are processed locally in the browser and are not uploaded by SheetCompare. Ordinary hosting may still process request metadata. This does not constitute an automated sensitive data filter or compliance certification. Users remain responsible for handling sensitive spreadsheets according to their organization's policies.


Project Status

  • Stage: MVP
  • Branch Strategy: feat/*develop (integration) → main (release/stable)

About

Local-first CSV and TSV diff tool. Drop two tables and see exactly what changed.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages