Fast, lowβfriction, freeform canvas for capturing, arranging, and lightly structuring ideas. Cross-platform desktop app using Tauri + React, fully offline, with JSON document storage.
Major Breakthrough: FIM has achieved MVP completion with 2 of 3 core systems fully implemented! The application is now a production-ready mind mapping tool with sophisticated interactive features and a beautiful, modern user interface inspired by contemporary web design trends.
- β¨ Note Creation: Double-click empty space to create notes
- βοΈ Text Editing: Select note β Enter to edit, Esc to finish
- π― Note Movement: Drag notes around the infinite canvas with resize handles (E/S/SE)
- ποΈ Deletion: Select notes β Delete/Backspace (removes notes + connections)
- π±οΈ Selection: Click, Shift+click, marquee selection, Alt+drag to subtract
- π Navigation: Mouse wheel zoom, Space+drag or middle-mouse to pan
- π¨ HiDPI Support: Crisp rendering on high-resolution displays
- π Basic Connections: Alt+drag between notes to create dotted connections
- π¨ Connection Styles: Solid/dotted lines, arrows (none/source/destination/both)
- π·οΈ Connection Labels: Double-click connections to add/edit labels
- π Search Integration: Search across connection labels
- β¬ Shape Creation: "Shape" toolbar button creates rounded rectangles
- π§² Magnetic Behavior: Overlap detection (50% threshold) with group translation
- π Visual Feedback: Red tint for grouped notes, yellow tint for proximity attraction
- π Shape-to-Shape: Magnetic interactions between overlapping shapes
- ποΈ Inspector Integration: Shape properties, magnetic toggle, dimensions control
- π Stack Creation: Ctrl+S to create stacks from 2+ selected notes, Ctrl+Shift+S to unstack
- β¨οΈ Keyboard Behaviors: Enter/Ctrl+Enter for siblings, Tab/Shift+Tab for indentation
- π Visual Indentation: 20px per indent level with dotted blue backgrounds
- π·οΈ Stack Labels: Shows note count, subtle styling for stacked notes
- π Alignment Tools: Full alignment/distribution commands with keyboard shortcuts
- πΎ File I/O: Open/Save with dual format support (.fim zip containers + JSON)
- π Undo/Redo: Comprehensive command pattern for all operations
- π Search System: Incremental search (Ctrl+F), connected cluster selection (Ctrl+G)
- π Recent Files: Track 10 most recent documents with quick access
- π¨ Inspector Panel: Right sidebar with Note/Connection/Shape/Document tabs
- π€ Export System: PDF, PNG, TXT, RTF, OPML with intelligent ordering
- πΎ Autosave: 30-second intervals with crash recovery
- π¨ Modern Design: Glassmorphism effects, gradients, and subtle shadows
- π Magical Interactions: Smooth animations, hover effects, and visual feedback
- π― Intelligent Toolbar: Contextual buttons with modern styling and tooltips
- πͺ Canvas Effects: Dynamic background gradients and interactive glow effects
- π± Responsive Design: Clean layout with proper spacing and modern typography
- π Visual Hierarchy: Clear information architecture with modern color schemes
- β‘ Performance Optimization: Spatial indexing for 10k+ notes, dirty-rect rendering
- Rust toolchain:
rustupwith latest stable (rustup update) - Node.js 18+ and npm
- Platform deps:
- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux: See Tauri prerequisites
- Windows: See Tauri prerequisites
- macOS: Xcode Command Line Tools (
The project is ready to run - no bootstrap needed:
# 1. Install frontend dependencies
cd app && npm install
# 2. Run in development mode
npm run tauri dev
# 3. Or build for production
npm run tauri buildcd app
npm install
npm run tauri devcd app
npm install
npm run tauri buildThe built app will be located at:
- App Bundle:
app/src-tauri/target/release/bundle/macos/FIM.app - DMG Installer:
app/src-tauri/target/release/bundle/dmg/FIM_0.1.0_x64.dmg
For Universal Binary (Intel + Apple Silicon):
# Install targets
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
# Build universal binary
npm run tauri build -- --target universal-apple-darwinFor Code Signing (requires Apple Developer Certificate):
# Set environment variables
export APPLE_CERTIFICATE="Developer ID Application: Your Name (TEAM_ID)"
export APPLE_ID="your-apple-id@email.com"
export APPLE_PASSWORD="app-specific-password"
# Build with signing
npm run tauri build -- --config '{"bundle":{"macOS":{"signing":{"identity":"'$APPLE_CERTIFICATE'"}}}}'For Notarization (macOS Gatekeeper):
# After signing, notarize the DMG
xcrun notarytool submit "app/src-tauri/target/release/bundle/dmg/FIM_0.1.0_x64.dmg" \
--apple-id "$APPLE_ID" \
--password "$APPLE_PASSWORD" \
--team-id "TEAM_ID" \
--wait
# Staple the notarization
xcrun stapler staple "app/src-tauri/target/release/bundle/dmg/FIM_0.1.0_x64.dmg"Common Issues:
-
Xcode Command Line Tools Missing:
xcode-select --install
-
Rust Toolchain Issues:
rustup update rustup target add x86_64-apple-darwin aarch64-apple-darwin
-
Node.js Version Issues:
# Use Node.js 18+ (recommended: use nvm) nvm install 18 nvm use 18 -
Permission Issues:
# Clear npm cache and reinstall npm cache clean --force rm -rf node_modules package-lock.json npm install
When you run the app, you'll see demo notes with instructions. Here are the key interactions:
- Create Notes: Double-click any empty area on the canvas
- Edit Text: Click to select a note, press Enter to edit, Esc when done
- Move Notes: Click and drag notes around the canvas
- Resize Notes: Drag the resize handles (SE corner, E edge, S edge)
- Delete Notes: Select notes and press Delete or Backspace
- Create Shape: Click "β¬ Shape" button in toolbar
- Magnetic Behavior: Notes near shapes get attracted (yellow), overlapping notes move together (red)
- Shape Properties: Use Inspector panel to adjust label, corner radius, magnetic toggle
- Create Stack: Select 2+ notes, press Ctrl+S (Cmd+S on Mac)
- Add Siblings: In stack, press Enter (below) or Ctrl+Enter (above)
- Indent/Outdent: Press Tab (indent) or Shift+Tab (outdent)
- Unstack: Press Ctrl+Shift+S (Cmd+Shift+S on Mac)
- Make Connections: Hold Alt and drag from one note to another
- Connection Labels: Double-click on connections to add/edit labels
- Connection Styles: Use Inspector to change line style and arrows
- Multi-Select: Shift+click to add notes to selection, or drag a box around notes
- Navigate Canvas: Mouse wheel to zoom, Space+drag (or middle-mouse drag) to pan
- Search: Ctrl+F (Cmd+F) for incremental search, Ctrl+G (Cmd+G) for connected clusters
- File Operations: Use Open/Save buttons, or Ctrl+O/Ctrl+S shortcuts
- Export: Multiple formats (PDF, PNG, TXT, RTF, OPML) with various options
app/β Frontend (Vite + React + TypeScript)src-tauri/β Rust backend (Tauri commands, file I/O)SPECS.mdβ Complete product specificationTODO.mdβ Development task breakdown
- π MVP Feature-Complete: 2 of 3 core systems fully implemented
- β Background Shapes: Complete magnetic behavior system
- β Stacks System: Full hierarchical organization with visual indentation
- β Advanced Features: Search, export, inspector, undo/redo, autosave
- β‘ Next Priority: Performance optimization for large documents (10k+ notes)
- Frontend: Vite + React + TypeScript with Canvas2D rendering
- Backend: Tauri v2 + Rust for file I/O, export, and performance-critical operations
- Architecture: Command pattern for undo/redo, proper TypeScript-Rust integration
- File Formats: Dual support (.fim zip containers + JSON), schema versioning
- Security: Memory-safe Rust, no .unwrap() panics, proper error handling
- Small-Medium Documents: Excellent performance (< 1000 notes)
- Large Documents: Good performance (1000-5000 notes)
- Very Large Documents: Optimization needed (10k+ notes) - Next Priority