Skip to content

Boblebol/JSONMap

JSONMap

JSONMap Logo

JSONMap

A local-first desktop workspace for visualizing, editing, versioning, converting, and generating code from structured data.

CI Version License Downloads Platform

Live Demo & Documentation



JSONMap is a local-first structured data workspace designed for both non-technical users and developers. Drop a file, explore it as a graph, edit safely, keep snapshots, convert formats, and generate typed descriptors without sending private data to an online service.

✨ Features

  • 🚀 Multi-Format Support: Open, edit, convert, and export JSON, YAML, XML, TOML, and CSV.
  • 📂 In-Memory Workspace: Drag and drop local files, switch between documents, reset to the original version, and export modified copies.
  • 🕸️ Interactive Graph: Navigate deep hierarchies with a zoomable graph, search nodes, and expand or collapse branches.
  • ⚡ Large-File Graph Mode: Parse and transform graph data through a worker pipeline, show a shallow preview first, and load deferred branches on demand.
  • ✍️ Safe Editing: Edit JSON scalar values from the inspector, copy JSONPath values, copy or export subtrees, and keep raw content visible.
  • 🧾 Versioning and Diff: Create named snapshots, restore previous versions, export snapshots, and compare changes.
  • 🔒 Privacy First: All processing happens locally. Your data never leaves your machine.
  • 🛠️ Developer Tools:
    • JQ and JSONPath: Query the active document, copy results, or create result documents.
    • Format Conversion: Convert the active document into JSON, YAML, TOML, XML, or CSV.
    • JWT Decoder: Inspect tokens without external websites.
    • Anonymizer: Mask PII/sensitive data with one click and save a redacted snapshot.
    • JSON Schema: Infer schemas, validate the active JSON, and create .schema.json workspace documents.
    • Code Generation: Create TypeScript, Python dataclass, Pydantic v2, Go, and Rust serde documents from JSON.
  • 🎨 Native Experience:
    • Dark/Light mode support.
    • Native macOS vibrancy and blur effects.
    • Keyboard shortcuts for efficiency.

Current Roadmap Status

The v1.8 large-file milestone is implemented:

  • TypeScript interfaces as .ts documents.
  • Python dataclasses as .py documents.
  • Pydantic v2 models as .pydantic.py documents.
  • Go structs as .go documents.
  • Rust serde structs as .rs documents.
  • JSON Schema inference and validation as .schema.json documents.
  • Stable fixture snapshots for generated TypeScript, Python, Pydantic, Go, and Rust output.
  • Worker-backed graph processing with progressive previews.
  • Lazy branch loading and structure-first graph limits for large JSON documents.
  • Generated 1 MiB, 5 MiB, and 20 MiB graph benchmark fixtures.

Next focus: v2.0 public-release readiness, including architecture docs, reproducible release hardening, and signing/notarization planning.

📸 Screenshots

Visualizer Graph Editor & Tools
Graph View Editor View

📥 Installation

  1. Go to the Releases page.
  2. Download the latest .dmg file (JSONMap_x64.dmg or JSONMap_aarch64.dmg).
  3. Open the .dmg and drag JSONMap to your Applications folder.

Important

macOS Security Note: JSONMap is intentionally distributed without Apple signing/notarization for now. If macOS says the app is "damaged" or cannot be opened, drag JSONMap to Applications, then run:

xattr -dr com.apple.quarantine /Applications/JSONMap.app

If macOS reports a permission error, rerun the same command with sudo.

🏗️ Development

Prerequisites:

# Clone the repository
git clone https://github.com/Boblebol/JSONMap.git
cd JSONMap

# Install dependencies
pnpm install

# Run in development mode
pnpm tauri dev

# Run the web shell only
pnpm run dev

# Run frontend tests
pnpm test --run

# Run graph large-file benchmarks
pnpm benchmark:graph

# Run backend tests
cd src-tauri
cargo test --locked

# Build for production
pnpm tauri build

Verification

Before opening a pull request or cutting a release candidate, run:

pnpm test --run
pnpm benchmark:graph
pnpm run build
cd src-tauri && cargo test --locked

The current frontend build emits a Vite chunk-size warning because Quicktype is bundled for in-app code generation. That warning is tracked as future performance work; it is not currently a build failure.

Large-file graph behavior and benchmark notes are documented in docs/performance.md.

🤝 Contributing

Contributions are welcome! Please check our Contributing Guidelines and see the Code of Conduct.

📄 License

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

❤️ Author

Built with passion by Alexandre Enouf. Check out my other projects on GitHub.