{"id":46174133,"url":"https://github.com/anitnilay20/thoth","last_synced_at":"2026-03-02T17:34:25.513Z","repository":{"id":312018806,"uuid":"1036515968","full_name":"anitnilay20/thoth","owner":"anitnilay20","description":"Thoth is a fast, desktop JSON/NDJSON viewer built with Rust + egui. It opens ~500 MB files by lazily parsing only visible/expanded nodes, keeps the UI responsive with an LRU cache and parallel search, and ships with an Catpuchin-themed light/dark UI.","archived":false,"fork":false,"pushed_at":"2026-02-04T15:00:09.000Z","size":30833,"stargazers_count":48,"open_issues_count":11,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-05T02:17:15.459Z","etag":null,"topics":["destop-application","json","rust"],"latest_commit_sha":null,"homepage":"https://anitnilay20.github.io/thoth/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anitnilay20.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-12T07:31:09.000Z","updated_at":"2026-02-04T15:00:06.000Z","dependencies_parsed_at":"2026-02-04T17:14:40.997Z","dependency_job_id":null,"html_url":"https://github.com/anitnilay20/thoth","commit_stats":null,"previous_names":["anitnilay20/thoth"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/anitnilay20/thoth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitnilay20%2Fthoth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitnilay20%2Fthoth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitnilay20%2Fthoth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitnilay20%2Fthoth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anitnilay20","download_url":"https://codeload.github.com/anitnilay20/thoth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitnilay20%2Fthoth/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30011966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T17:00:27.440Z","status":"ssl_error","status_checked_at":"2026-03-02T17:00:03.402Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["destop-application","json","rust"],"created_at":"2026-03-02T17:34:24.652Z","updated_at":"2026-03-02T17:34:25.500Z","avatar_url":"https://github.com/anitnilay20.png","language":"Rust","funding_links":[],"categories":["Applications"],"sub_categories":["Utilities"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\n    \u003cimg src=\"assets/thoth_icon_256.png\" alt=\"Thoth Icon\" width=\"75\" style=\"vertical-align: middle;\"/\u003e\n    Thoth - JSON \u0026 NDJSON Viewer\n  \u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![CI](https://github.com/anitnilay20/thoth/workflows/CI/badge.svg)](https://github.com/anitnilay20/thoth/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/anitnilay20/thoth/branch/main/graph/badge.svg)](https://codecov.io/gh/anitnilay20/thoth)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Rust Version](https://img.shields.io/badge/rust-1.70%2B-blue.svg)](https://www.rust-lang.org)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"website/public/demo.gif\"/\u003e\n\u003c/div\u003e\n\nThoth is a high-performance, feature-rich desktop application for viewing and exploring JSON and NDJSON files with a clean, intuitive interface.\n\n---\n\n## Features\n\n- **Multiple File Format Support**: Handles JSON Objects, JSON Arrays, and NDJSON (Newline-Delimited JSON) files\n- **Lazy Loading**: Efficiently handles large files by loading only what's needed\n- **Smart File Type Detection**: Automatically detects whether a file is JSON or NDJSON\n- **Powerful Search**: Search through complex JSON structures with ease\n- **Interactive Exploration**: Expandable tree view to navigate nested structures\n- **Copy Support**: Easy copying of JSON paths and values\n- **Dark/Light Modes**: Comfortable viewing in any environment\n- **Multi-Window Support**: Open multiple independent windows to compare files\n- **Keyboard Shortcuts**: Comprehensive keyboard shortcuts for efficient workflow ([see all shortcuts](docs/KEYBOARD_SHORTCUTS.md))\n- **Customizable**: All shortcuts and settings configurable via TOML\n\n---\n\n## Installation\n\n### Download Pre-built Binaries\n\nDownload the latest release from [GitHub Releases](https://github.com/anitnilay20/thoth/releases).\n\n#### macOS\n\n**Option 1: DMG Installer (Recommended)**\n\n1. Download the appropriate DMG:\n   - **Apple Silicon (M1/M2/M3)**: `Thoth-aarch64-apple-darwin.dmg`\n   - **Intel**: `Thoth-x86_64-apple-darwin.dmg`\n2. Open the DMG and drag Thoth.app to Applications\n3. **Important**: Open Terminal and run:\n   ```bash\n   xattr -cr /Applications/Thoth.app\n   ```\n4. Launch from Applications\n\n**Option 2: Manual Installation**\n\n1. Download: `thoth-aarch64-apple-darwin.tar.gz` or `thoth-x86_64-apple-darwin.tar.gz`\n2. Extract: `tar -xzf thoth-*.tar.gz`\n3. Remove quarantine: `xattr -cr Thoth.app`\n4. Move to Applications: `mv Thoth.app /Applications/`\n5. Double-click to open\n\n\u003e ⚠️ **Gatekeeper Warning**: This app is not code-signed. You must remove the quarantine attribute using the command above before first launch.\n\n#### Windows\n\n**Option 1: MSI Installer (Recommended)**\n\n1. Download `Thoth.msi`\n2. Double-click to install\n3. Launch from Start Menu\n\n**Option 2: Portable**\n\n1. Download `thoth-x86_64-pc-windows-msvc.zip`\n2. Extract and run `thoth.exe`\n\n#### Linux\n\n**Option 1: DEB Package (Recommended for Debian/Ubuntu)**\n\n1. Download `thoth_*_amd64.deb`\n2. Install: `sudo dpkg -i thoth_*_amd64.deb`\n3. Run: `thoth`\n\n**Option 2: Portable**\n\n1. Download `thoth-x86_64-unknown-linux-gnu.tar.gz`\n2. Extract: `tar -xzf thoth-x86_64-unknown-linux-gnu.tar.gz`\n3. Make executable: `chmod +x thoth`\n4. Run: `./thoth`\n\n### Building from Source\n\n#### Prerequisites\n\n- Rust (latest stable version recommended)\n- For building installers: [cargo-packager](https://github.com/crabnebula-dev/cargo-packager)\n\n```bash\n# Clone the repository\ngit clone https://github.com/anitnilay20/thoth.git\ncd thoth\n\n# Build and run in debug mode\ncargo run\n\n# Build for production\ncargo build --release\n\n# The binary will be available in target/release/thoth\n```\n\n#### Building Installers\n\nTo create platform-specific installers (MSI, DMG, DEB):\n\n```bash\n# Install cargo-packager\ncargo install cargo-packager --locked\n\n# Build installer for your platform\ncargo packager --release\n\n# Installers will be in the dist/ directory:\n# - Windows: dist/*.msi\n# - macOS: dist/*.dmg and dist/*.app\n# - Linux: dist/*.deb\n```\n\nSee [RELEASE_PROCESS.md](docs/RELEASE_PROCESS.md) for more details on the release and packaging workflow.\n\n---\n\n## Usage\n\n### Opening Files\n\n**From the Application:**\n\n1. Launch Thoth\n2. Use the top bar to open a JSON or NDJSON file (or press `Cmd/Ctrl+O`)\n\n**From the Command Line:**\n\n```bash\nthoth document.json\nthoth /path/to/data.ndjson\n```\n\n**From File Manager:**\n\n- Double-click any `.json`, `.ndjson`, `.jsonl`, or `.geojson` file\n- Right-click and select \"Open With\" → \"Thoth\"\n- Set Thoth as your default JSON viewer (see [File Associations](docs/FILE_ASSOCIATIONS.md))\n\n### Navigation and Features\n\n3. Navigate through the file using the tree view\n4. Use the search functionality to find specific values (`Cmd/Ctrl+F` to focus)\n5. Toggle between dark and light mode as needed (`Cmd/Ctrl+Shift+T`)\n6. Open new windows to compare multiple files (`Cmd/Ctrl+N`)\n\nFor a complete list of keyboard shortcuts, see the [Keyboard Shortcuts Guide](docs/KEYBOARD_SHORTCUTS.md).\n\n---\n\n## Project Structure\n\n- `src/main.rs`: Application entry point and core logic\n- `src/components/`: UI components including the JSON viewer\n- `src/file/`: File handling, lazy loading, and type detection\n- `src/search/`: Search functionality\n- `src/helpers/`: Utility functions and shared code\n- `docs/`: Documentation for architecture and design patterns\n\n---\n\n## Documentation\n\n- **[Component Architecture](docs/COMPONENT_ARCHITECTURE.md)**: Detailed guide on Thoth's component system and one-way data binding pattern\n- **[File Associations](docs/FILE_ASSOCIATIONS.md)**: How to open JSON files directly from your file manager and set Thoth as default viewer\n- **[Keyboard Shortcuts](docs/KEYBOARD_SHORTCUTS.md)**: Complete reference of all keyboard shortcuts\n- **[Design System](docs/DESIGN_SYSTEM.md)**: UI design guidelines and patterns\n- **[Profiling](/docs/PROFILING.md)**: Performance profiling and optimization techniques used in Thoth\n\n---\n\n## Architecture\n\nThoth is built with a modular architecture that emphasizes performance and flexibility:\n\n### Core Components\n\n1. **Application Core (`ThothApp`)**:\n   - The central controller that manages the application state\n   - Coordinates between UI components and data handling\n   - Manages the theme, file paths, and error states\n\n2. **UI Components**:\n   - **TopBar**: Handles file opening, type selection, and search inputs\n   - **CentralPanel**: Main content area with the JSON viewer\n   - **JsonViewer**: Tree-based visualization of JSON structures with expandable nodes\n   - **Theme**: Manages dark/light mode and styling\n\n3. **File Handling System**:\n   - **Lazy Loading**: Only parses the parts of the file that are being viewed\n   - **File Type Detection**: Automatically identifies JSON, JSON arrays, and NDJSON formats\n   - **LRU Cache**: Optimizes performance by caching recently accessed nodes\n\n4. **Search Engine**:\n   - Parallel processing for fast searching across large files\n   - Background scanning to maintain UI responsiveness\n   - Uses Rayon for parallel iteration and memchr for optimized substring searching\n\n### Data Flow\n\n```\nUser Interaction → TopBar → ThothApp → File Loading/Search Operations → CentralPanel → JsonViewer\n```\n\n### Performance Optimizations\n\n- **Lazy Parsing**: JSON is only parsed when nodes are expanded\n- **Background Processing**: Long operations run in separate threads\n- **Memory Efficiency**: Stores file offsets instead of keeping entire files in memory\n- **LRU Caching**: Recently accessed nodes are cached for faster repeat access\n- **Parallel Search**: Utilizes multiple CPU cores for searching large files\n\n### Error Handling\n\n- Comprehensive error handling using the `anyhow` crate\n- Graceful degradation with user-friendly error messages\n- Robust file type detection to prevent parsing errors\n\n---\n\n## Technologies\n\n- [Rust](https://www.rust-lang.org/): Primary language\n- [egui](https://github.com/emilk/egui): Immediate mode GUI library\n- [serde_json](https://github.com/serde-rs/json): JSON serialization/deserialization\n\n---\n\n## Roadmap\n\nKey features planned for future development:\n\n- JSON Path expression support\n- Export functionality for nodes and search results\n- Multi-file support with tabbed interface\n- Schema validation against JSON Schema\n- Diff view to compare JSON files\n- Search history and improved search capabilities\n- Data visualization for numerical values\n- JSON editing capabilities\n- Cross-platform packages (macOS, Windows, Linux)\n- Plugin system for extensibility\n\n---\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## Acknowledgments\n\n- Named after Thoth, the Egyptian deity of wisdom, writing, and knowledge\n- Inspired by the need for a fast, native JSON viewer for large files\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanitnilay20%2Fthoth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanitnilay20%2Fthoth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanitnilay20%2Fthoth/lists"}