NoteFlow is a fast, offline-first, keyboard-centric notes app for the Linux desktop.
Engineered with Tauri 2 · Rust · React · TypeScript · SQLite, featuring an Apple OS 27 Liquid Glass design system, hardware-accelerated 3D perspective tilt, and dynamic cursor-tracking specular lighting.
- Dynamic 3D Tilt: Hardware-accelerated perspective tilt (
perspective: 1000px) that pitches and rolls cards with mouse movement and smoothly springs back on mouse leave. - Dual-Layer Cursor Spotlight: An interactive optical spotlight (sharp crystal specular core + chromatic halo) tracks the cursor across frosted glass in both Light and Dark modes.
- Tactile Element Micro-Interactions: Action pills, checklist capsules, tag chips, selection rings, and titles elevate and react organically when hovered.
- Continuous Squircle Geometry: Smooth continuous curvature with macOS-inspired precision radii.
- Refractive Frosted Blur: Deep multi-layer backdrop filters (
blur(28px) saturate(190%)) with specular rim lighting and ambient luminous card glows. - Luminous Jewel Tints: 8 vibrant color personalities (Default, Crimson Red, Amber Tangerine, Sun Gold, Emerald Apple Green, Cyan Ocean, Sapphire Blue, Electric Violet).
- Adaptive Canvas Theme: Seamless Light, Dark, and System theme synchronizations.
- Local SQLite Database (WAL Mode): Notes are read and written locally through Rust and
rusqlite. - Debounced Autosave: Changes save after a brief pause; failed writes retry and keep the draft open.
Ctrl+Sforces an immediate save. An abrupt app exit can lose edits still waiting for their first save, and a power failure can lose the latest database commit. - Local notes: No analytics or account is required. Your notes stay at
~/.local/share/com.noteflow.app/noteflow.db; update checks contact GitHub without sending note contents.
- Schedule from the editor: the bell offers quick presets ("In 1 hour", "Tomorrow 9:00") or an exact date and time; a pending reminder shows as an active toolbar button and a bell badge on the note card ("Overdue", "in 25m", "tomorrow 09:00").
- Recoverable in-app alerts: reminders due while NoteFlow is closed appear on the next launch. The alert stays visible until you open or dismiss it, and its schedule remains in SQLite until then. Closing or crashing first causes it to appear again. Archived and trashed notes stay quiet.
- Substring and keyword search across title, body content, checklist items, and tags with real-time match highlighting.
- Backed by FTS5 trigram indexes with Unicode case folding, so
CAFÉfindsCafé. One- and two-character searches scan the selected view with Unicode case folding.
- Undo for note actions:
Ctrl+Zand snackbar Undo can reverse supported note actions. Text editing uses the editor's native undo. - Soft Trash Recovery: Deleted notes move to Trash with 1-click restore or permanent delete confirmation.
- Batch Selection: Multi-select notes via
Shift+Click,Ctrl+Click, orCtrl+Afor bulk tagging, coloring, archiving, or deletion. - Export & Backup: Export individual notes as clean Markdown (
.md) or export the workspace as JSON (up to 128 MB).
- Update on your terms: a launch-time check against GitHub Releases surfaces new versions as a toast — one click downloads the signed update, verifies its minisign signature, installs, and relaunches (with live progress).
- No dead ends: the AppImage updates in place; the system
.debpackage links straight to the release page. A manual check lives in Settings → Software Update.
| Shortcut | Action | Scope |
|---|---|---|
| Ctrl + N | Create new note | Global |
| Ctrl + K | Focus instant search | Global |
| Ctrl + S | Save / flush editor immediately | Editor |
| Ctrl + Shift + P | Toggle Pin status | Editor / Selection |
| Ctrl + Shift + F | Toggle Favorite (Star) | Editor / Selection |
| Ctrl + Z | Undo last action | Global |
| Ctrl + A | Select all notes | Grid |
| Delete | Move selected note(s) to Trash | Grid |
| Esc | Close Editor / Clear search / Exit selection | Modal / Global |
| ? or Ctrl + / | Open Keyboard Shortcuts Cheat Sheet | Global |
┌────────────────────────────────────────────────────────┐
│ React 18 + TypeScript UI │
│ Zustand Stores · Apple OS 27 CSS Glass System │
└──────────────────────────┬─────────────────────────────┘
│ Typed Tauri IPC Invoke
▼
┌────────────────────────────────────────────────────────┐
│ Tauri 2 / Rust Core │
│ Command Handlers · Validation · Business Logic │
└──────────────────────────┬─────────────────────────────┘
│ rusqlite Connection
▼
┌────────────────────────────────────────────────────────┐
│ Local SQLite Database │
│ WAL Journaling · Foreign Keys · Migrations │
│ FTS5 Trigram Search Indexes (schema v3) │
│ Path: ~/.local/share/com.noteflow.app │
└────────────────────────────────────────────────────────┘
src/ React frontend
components/ NoteCard, NoteEditor, TopBar, Sidebar, ShortcutsModal, SelectionBar…
pages/ NotesPage, SettingsPage
hooks/ useTheme, useKeyboardShortcuts, useAppInit, useReminders
store/ Zustand state management (uiStore, notesStore)
services/api.ts Typed Tauri command invocations
styles/ Apple OS 27 design tokens (global.css) & components.css
utils/ Highlighting, undo stack, formatting, reminders, markdown exporter
src-tauri/src/ Rust backend
commands/ Tauri command interfaces (notes, tags, settings)
services/ Note & tag query operations and business logic
database/ Connection management (WAL mode) & SQL migrations
models/ Note, Tag, ChecklistItem structs & patches
error/ Error mapping to user-friendly messages
For Ubuntu, Debian, Linux Mint, Pop!_OS, and Debian-based distributions:
-
Download the installer:
👉 Download NoteFlow v1.7.0 (.deb) -
Install via terminal:
sudo dpkg -i noteflow_1.7.0_amd64.deb
Or simply double-click the
.debfile in your Linux file manager (Nautilus/Dolphin). -
Launch:
Search for NoteFlow in your desktop application menu or runnoteflowfrom the terminal.
- Node.js 18+ and npm
- Rust 1.80+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Linux build dependencies (Debian/Ubuntu):
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
# Clone the repository
git clone https://github.com/imitravanu/Noteflow.git
cd Noteflow
# Install frontend dependencies
npm install
# Run Vite development server
npm run dev
# Run desktop application with live reload
npm run tauri devnpm run typecheck # TypeScript verification
npm test # Vitest frontend tests
cd src-tauri && cargo test # Rust SQLite integration testsnpm run build:appBinaries are output to src-tauri/target/release/noteflow.
This project is licensed under the MIT License — Copyright (c) 2026 Mitravanu.