Skip to main content

Excel for Developers - A fast, local-first web GUI for exploring data with VisiData

Project description

VisiLens Logo

VisiLens

Excel for Developers

Open 1M+ rows in seconds. Local, fast, simple.

A high-performance, local-first web GUI for exploring datasets. Instantly view and filter CSV, Parquet, Excel, and JSON files using the power of VisiData.

License: MIT Python 3.10+ VisiData Engine FastAPI React PRs Welcome

FeaturesInstallationUsageArchitectureContributing


🚀 Why VisiLens?

Data exploration shouldn't require writing boilerplate Pandas code or waiting for heavy spreadsheet software like Excel to load. VisiLens is a modern CSV viewer and Parquet explorer that combines the raw speed of VisiData with a lightweight web interface.

  • ⚡️ Load 1M rows in under 2 seconds: Powered by VisiData's highly optimized engine.
  • 🔒 All local: Your data never leaves your machine. No cloud uploads.
  • 🛠 Zero config: CLI-first workflow. Pipe data in, explore, and get back to coding.
  • 🔌 Universal Support: Open CSV, TSV, JSON, Parquet, Excel, SQLite, and 50+ other formats.

✨ Features

  • Instant Data Visualization: Just run vdweb data.csv to visualize large datasets instantly.
  • Backend-powered Sorting & Filtering: Perform complex queries on millions of rows using the VisiData engine.
  • Lightweight Data Grid: A virtualized React-based table view for smooth scrolling.
  • Zero Config: No database setup required. Works as a standalone CSV/Parquet viewer.

📂 Supported Formats

VisiLens leverages VisiData's loaders to support a wide range of formats out of the box:

  • Tabular: .csv, .tsv, .xlsx (Excel), .parquet
  • Structured: .json, .jsonl, .yaml
  • Database: .sqlite, .db
  • Code: .pcap (Wireshark), .xml, .html tables

📊 Benchmarks

We take performance seriously. Here is how VisiLens compares when opening a 1,000,000 row CSV dataset on a standard MacBook Air (M2).

Tool Load Time (1M Rows) Memory Footprint Interactive Sorting
VisiLens ~1.7s Minimal (< 50MB Total) Instant (Backend: < 0.4s)
Excel > 30s (Often Fails) High (Blocking RAM) Slow/Unresponsive
Pandas-based GUI > 15s (Cold Start) High (Entire DF in RAM) Sluggish (Non-Virtualized)
Jupyter (print df) Fast Medium Static Text

Test Data: 1M rows, 3 columns (Mixed types). Numbers are from my MacBook Air M2 during real development use.

📦 Installation

VisiLens is available as a Python package.

pip install vdweb

Note: VisiLens requires Python 3.10 or higher.

💻 Usage

Command Line Interface

The primary way to use VisiLens is via the command line.

# Open a CSV file
vdweb data.csv

# Open a Parquet file
vdweb large-dataset.parquet

# Open an Excel file
vdweb spreadsheet.xlsx

# Launch without opening the browser automatically
vdweb data.json --no-browser

# Specify a custom port
vdweb data.csv --port 9000

Web Interface

Once launched, VisiLens opens in your default browser (usually http://localhost:8000).

  1. View Data: Scroll through your dataset efficiently.
  2. Sort: Click column headers to sort ascending/descending.
  3. Filter: Use the filter inputs to search within columns.
  4. Load New Data: (Coming Soon) Drag and drop files directly into the window.

🏗 Architecture

VisiLens is built on a robust modern stack designed for performance:

  • Backend: FastAPI server bridges VisiData and the browser.
  • Communication: WebSockets stream slices on demand.
  • Frontend: React grid renders only what you see.

Architecture Diagram

🗺 Roadmap

We are actively working on making VisiLens the ultimate local data companion.

  • v0.1: Core Engine, Virtual Scrolling, Sorting, Filtering.
  • Jupyter Integration: Launch VisiLens directly from a notebook cell (visilens.view(df)).
  • Drag-and-drop file loading
  • Plotting: Quick histograms and scatter plots via Vega-Lite.
  • Editing: Edit cells and save changes back to CSV/Parquet.
  • SQL Support: Connect directly to SQLite/Postgres/DuckDB.

🛠 Development

Want to contribute? Great! Here's how to set up the development environment.

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm

Setup

  1. Clone the repository

    git clone https://github.com/PStarH/VisiLens.git
    cd VisiLens
    
  2. Backend Setup

    # Create virtual environment
    python -m venv .venv
    source .venv/bin/activate  # or .venv\Scripts\activate on Windows
    
    # Install dependencies
    pip install -e ".[dev]"
    
  3. Frontend Setup

    cd frontend
    npm install
    
  4. Run Locally

Terminal 1 (Backend):

uvicorn backend.main:app --reload --port 8000

Terminal 2 (Frontend):

cd frontend
npm run dev
  1. Build frontend assets (optional)

If you prefer to run only the Python CLI (without a separate Vite dev server), you can build the frontend once:

cd frontend
npm run build

This produces a production bundle under frontend/dist/ which is copied into vdweb/static/ for releases. End users then just run:

vdweb path/to/data.csv

🤝 Contributing

For Contributors: where things live

  • Python package (vdweb/): This is the installable package published to PyPI. The CLI entrypoints vdweb / visilens both resolve to vdweb.cli:main as configured in pyproject.toml.
  • Dev backend (backend/): A separate FastAPI app used only for local development (uvicorn backend.main:app). It mirrors the behavior of the packaged backend but is not what users import when they install vdweb.
  • Core logic: The VisiData-powered data access layer lives in vdweb/core.py (and is mirrored in backend/core.py for the dev app). If you want to change how data is loaded/sorted/filtered, start here.

Typical contributor workflow

  1. Edit backend / core logic in vdweb/ (and update backend/ if needed for dev parity).
  2. Run the dev backend + frontend locally as described in Development.
  3. If you change the React app and want those changes to ship, run npm run build in frontend/ so the bundle that will be copied into vdweb/static/ is up to date.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ by PStarH and the Open Source Community.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vdweb-0.1.1.tar.gz (92.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vdweb-0.1.1-py3-none-any.whl (89.5 kB view details)

Uploaded Python 3

File details

Details for the file vdweb-0.1.1.tar.gz.

File metadata

  • Download URL: vdweb-0.1.1.tar.gz
  • Upload date:
  • Size: 92.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for vdweb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3ace6b4ad8b6c55e3cc656df7decbb9f872af5e8b1204f0804d6185e61d28f66
MD5 64634de531f8179c323d37f0494513da
BLAKE2b-256 3ab78f2a280844eb9e8865f04a3affd8ae61d03c6df274def30cc114cbadd5c1

See more details on using hashes here.

File details

Details for the file vdweb-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: vdweb-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 89.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for vdweb-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c022c357e4357f9d9feeaaec5ca2d53f7014518d7bfe777ed246f3171ef4db0f
MD5 bb3f62093508a19cd69277bbe19037fe
BLAKE2b-256 8571700671cd24dfa118f7da341dfcb66f0e6291aee4cfd5ed7ab7818c559d8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page