English | 中文
A desktop app for browsing huge dataset files with seconds-to-first-screen performance and low memory usage (Tauri + Rust + SvelteKit).
Download the ready-to-install .dmg from GitHub Releases.
.dmg, then drag DataLens.app into Applications.jsonl (JSON Lines).csv.json.parquet (via DuckDB)rustup)xcode-select --install)cd apps/desktop
npm install
The repo root provides a more robust dev launcher script dev.sh (checks ports, optionally cleans caches, optionally prebuilds frontend, and ensures child processes exit together).
./dev.sh
Common modes:
./dev.sh tauri # default: runs tauri dev (includes vite dev)
./dev.sh vite # vite-only (without tauri shell)
Optional env vars:
# Auto-kill when port is occupied (default: 1)
FORCE_KILL=0 ./dev.sh
# Skip frontend rebuild / cache clean before start (defaults: 1)
REBUILD_FRONTEND=0 CLEAN_FRONTEND=0 ./dev.sh
apps/desktop/src/: SvelteKit UI (main screens + interactions)src/lib/ipc.ts: frontend IPC wrapper (invoke + type defs)src-tauri/: Tauri shell (Rust command layer)core/: Rust core engine (crate: dh_core)dev.sh: dev launcher scriptdeveploer/: developer docs (entry: deveploer/main.md)test/: test records (see EXAM.md)Note:
apps/desktop/node_modules/,apps/desktop/src-tauri/target/, etc. are build outputs / dependency caches. Avoid writing docs there, and do not treat changes there as source changes.
Frontend calls Tauri commands via apps/desktop/src/lib/ipc.ts → apps/desktop/src-tauri/src/commands.rs → core/src/engine.rs (CoreEngine).
Implemented core interfaces (by capability):
open_file(path) -> { session, first_page }next_page(session_id, cursor, page_size) -> RecordPageget_record_raw(session_id, meta) -> Stringscan_folder_tree(path, max_depth, max_nodes)mode = current_pagemode = scan_all (returns taskId, supports cancel_task, results are pageable)request = selectionrequest = search_taskTest records live in test/. For each test run, follow EXAM.md and write to test/main_record.md (what you tested, results, focused issues, and version).
The Tauri shell crate declares MIT (see apps/desktop/src-tauri/Cargo.toml). If you want to add a root-level LICENSE file, we can do it in a later version.