A lightweight, open-source desktop application built in Rust with Tauri that helps you store and retrieve information from text, URLs, and articles. Everything stays local on your machineβno cloud dependency, completely private.
β¨ Local Storage - All notes stored as JSON files in ~/.reflectai/
π Full-Text Search - Instantly search across all your notes
π Text Analysis - Extract summaries and keywords from pasted content
π URL Analysis - Fetch and analyze web articles automatically
πΎ Import/Export - Backup and share notes as JSON
π¨ Dark Mode UI - Beautiful, modern interface optimized for long reading sessions
β‘ No Dependencies - Works completely offline, no API keys required (Gemini integration optional)
π₯οΈ Wayland Compatible - Runs smoothly on modern Linux desktops
- Rust 1.70+ - Install from https://rustup.rs/
- Node.js 18+ (only if you want to modify the frontend)
- Clone or download the repository:
cd ~/Documents/reflectAI- Install Rust (if not already installed):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env- Build and run:
cargo tauri devThis will compile the app and open it in development mode. The first build may take 2-3 minutes.
cargo tauri buildThe compiled binary will be in src-tauri/target/release/.
VITE_GEMINI_API_KEY=urapikey
- Click "+ New" or start typing in the title field
- Add your note title and content
- (Optional) Add comma-separated tags
- Click "πΎ Save" or press
Ctrl+S(orCmd+Son macOS)
- Paste text or a URL into the content area
- Click "π Analyze"
- View extracted summary and keywords in the right panel
- Type a search term in the search box (top-left)
- Click "Go" or press Enter
- Results update in real-time
- Click "πΎ Export"
- A JSON file is downloaded with all your notes
- Import later by opening that file with the app
All notes are stored locally in:
- Linux/macOS:
~/.reflectai/notes.json - Windows:
%USERPROFILE%\.reflectai\notes.json
The JSON format is human-readable and can be edited manually or imported into other apps.
{
"notes": [
{
"id": "abc123xyz",
"title": "Rust Memory Safety",
"content": "Rust guarantees memory safety without garbage collection...",
"tags": ["rust", "programming"],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z",
"source": null
}
]
}| Shortcut | Action |
|---|---|
Ctrl+S or Cmd+S |
Save current note |
Enter (in search) |
Search notes |
reflectAI/
βββ src/
β βββ main.rs # Tauri app entry point & IPC handlers
β βββ lib.rs # Storage, analysis logic
βββ frontend/dist/
β βββ index.html # UI (embedded CSS + JS)
βββ Cargo.toml # Rust dependencies
βββ tauri.conf.json # Tauri configuration
βββ build.rs # Build script
cargo tauri devOpens the app with hot-reload support (note: Rust backend changes require restart).
cargo testEdit frontend/dist/index.html - CSS and JavaScript are embedded inline. Restart cargo tauri dev to see changes.
- Storage: Simple JSON file-based store with in-process locking
- Analysis: Local text summarizer and keyword extractor
- IPC: Tauri command handlers expose 9 commands to the frontend
- UI Framework: Vanilla JavaScript (no build step needed)
- Styling: CSS Grid layout with dark theme
- Communication: Tauri invoke API calls the Rust backend
invoke('get_notes') // Fetch all notes
invoke('search_notes', { query }) // Search notes
invoke('add_note', { title, content, tags }) // Create note
invoke('update_note', { id, title, content }) // Update note
invoke('delete_note', { id }) // Delete note
invoke('analyze_text', { text }) // Analyze text
invoke('analyze_url', { url }) // Fetch & analyze URL
invoke('export_notes') // Export as JSON
invoke('import_notes', { json_str }) // Import from JSONTo enable cloud-based AI analysis (requires Google Gemini API):
- Get a free API key from Google AI Studio
- Create a
.envfile in the project root:
GEMINI_API_KEY=your_key_here
- Rebuild:
cargo tauri build
(Currently the local analyzer works without this; cloud integration is a planned enhancement)
Ensure you're using a recent version of Tauri (v2.0+). If issues persist, try:
WAYLAND_DISPLAY= cargo tauri dev # Falls back to X11Make sure Rust is installed and in your PATH:
rustc --versionIf not, run:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/envInitial compilation takes 2-3 minutes. Subsequent builds are much faster. Consider using mold linker for faster builds:
# On Linux
export RUSTFLAGS="-C link-arg=-fuse-ld=mold"
cargo tauri devIf the window opens but shows no content:
- Check that
frontend/dist/index.htmlexists - Verify
tauri.conf.jsonpoints to correct paths - Check console for errors: open DevTools with
F12
Contributions welcome! Areas for improvement:
- Vector embeddings for semantic search
- Dark/light theme toggle
- Note encryption
- Sync between devices
- Better HTML extraction for URLs
- Integration with Gemini API
- Plugin system
- Offline embedding model support
MIT - Free for personal and commercial use.
Q: Is my data private?
A: Yes. All data stays on your machine. No cloud sync or telemetry.
Q: Can I use this on multiple machines?
A: Manually export/import notes. Automatic sync is planned.
Q: Why Rust instead of Electron?
A: Rust + Tauri is faster, uses less memory, and works better on Wayland.
Q: Can I sync notes?
A: Not built-in yet, but JSON export lets you use tools like Syncthing.
Q: Is there a web version?
A: Not currently. Desktop app only.
Made with β€οΈ in Rust. Questions? Open an issue on GitHub!