A cross-platform desktop UI application for interacting with and visualizing Irmin DB stores — similar in spirit to MongoDB Compass, but tailored to Irmin's Git-like data model.
- ✅ Tree Browser - Navigate through branches, commits, and key/value pairs
- ✅ Commit History - View and explore commit timeline
- ✅ Branch Management - Switch between and compare branches
- ✅ Diff Viewer - Compare changes between commits with visual diff
- ✅ Search & Filter - Find keys and nodes quickly
- ✅ Dark/Light Mode - Toggle between themes
- ✅ Responsive Design - Works on different screen sizes
- Mock Data Support - Complete UI with sample Irmin data
- Rust Backend - Tauri-based desktop application
- Modern Web UI - HTML/CSS/JavaScript frontend
- Cross-Platform - Windows, macOS, Linux support
-
Clone the repository
git clone https://github.com/SoulPancake/IrminView.git cd IrminView -
Install dependencies and run the desktop app
# Install system dependencies automatically make install-deps # Run the desktop application (uses demo data by default) make run-app
-
Alternative: Full setup with server backend
# Complete setup: dependencies + demo data + server + app build make complete-setup # Run with server backend make run-app-http
-
Prerequisites
- Rust (1.70 or later)
- System dependencies:
pkg-config,libgtk-3-dev,libwebkit2gtk-4.1-dev
-
Build and run in development mode
cd src-tauri cargo run -
Build for production
cd src-tauri cargo build --release
make run-app- Run desktop app with demo data (no server needed)make run-app-http- Run desktop app connected to Irmin servermake build-app- Build desktop application for productionmake install-deps- Install system dependenciesmake help- Show all available commands
IrminView/
├── src-tauri/ # Rust backend (Tauri application)
│ ├── src/
│ │ ├── main.rs # Application entry point
│ │ ├── lib.rs # Library exports
│ │ ├── irmin/ # Irmin data structures and logic
│ │ └── ui/ # UI-related commands and state
│ ├── tauri.conf.json # Tauri configuration
│ └── Cargo.toml # Rust dependencies
├── frontend/
│ └── dist/ # Frontend assets (HTML/CSS/JS)
├── assets/
│ └── mock-data/ # Sample Irmin data for testing
├── tests/ # Integration tests
├── e2e/ # End-to-end tests (future)
└── README.md
cd src-tauri
cargo testcd src-tauri
cargo test --test integration_testsOpen the application and test:
- Tree navigation and expansion
- Theme switching
- Search functionality
- Commit and branch views
- Diff visualization
- 🟢 Initial Load - Empty Irmin store, blank state
- 🌿 Simple Tree - One branch, multiple keys and nested nodes
- 🌳 Multi-Branch View - Two branches with common ancestor
- ⚔️ Merge Conflict View - Simulated conflict between commits (future)
- 🔍 Search Results - Filter tree by key name
- 🌘 Dark/Light Mode - UI appearance toggle
- Backend: Rust + Tauri 2.0
- Frontend: Vanilla HTML/CSS/JavaScript
- UI: Custom responsive design
- Data: Mock Irmin structures (extensible to real Irmin)
- Build: Cargo + Tauri CLI
- Project scaffolding and structure
- Core Rust data types for Irmin concepts
- Complete UI with tree browser, commits, branches, diff viewer
- Theme switching (dark/light mode)
- Search functionality
- Mock data generation for testing
- Basic unit and integration tests
- Cross-platform desktop app foundation
- Real Irmin backend integration
- Enhanced diff visualization
- Visual regression testing
- E2E test suite
- Irmin store connection management
- Advanced merge conflict resolution
- Plugin system for extensibility
- Performance optimizations for large datasets
- Collaborative features
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT OR Apache-2.0 License - see the LICENSE files for details.
- Tauri - For the excellent desktop app framework
- Irmin - For the inspiring Git-like database concepts
- The Rust and Web communities for amazing tools and libraries
Note: This application currently uses mock data to demonstrate the UI and features. Integration with real Irmin stores is planned for future releases.
For questions, issues, or feature requests, please open an issue on GitHub.
