A minimalist, private, and customizable note-taking app.
Nemos is an intuitive and easy-to-use note-taking application designed to help users focus on capturing and organizing their thoughts without distractions. Most of its features seamlessly integrate into the text, providing a smooth and immersive writing experience.
- Workspaces: Organize your notes into separate workspaces, each with its own directory, file tree, and recent notes view.
- Tabbed Editing: Open multiple notes at once with keyboard shortcuts, context menus, and tab persistence across sessions.
- Rich Text Editor (TipTap v3): Headings, paragraphs, bold, italics, quotes, inline code, strikethrough, underline, task lists, and more.
- Advanced Editor Extensions:
- Slash Commands: Type
/to insert headings, lists, code blocks, math, diagrams, and more. - Code Blocks: Language selector, syntax highlighting, and copy button.
- Diagrams: Integrated Mermaid.js support.
- Mathematical Notation: Inline and display math with KaTeX.
- Chemical Notation: Support for SMILES chemical structures.
- Resizable Images: Drag to resize and align images.
- Tables: Interactive tables with add row/column buttons.
- File Upload: Drag-and-drop or paste images directly into the editor.
- Slash Commands: Type
- File Tree with Drag & Drop: Hierarchical workspace tree with drag-and-drop for moving notes and folders, context menus, and "Reveal in Explorer".
- Auto-Save: Notes are saved automatically as you type.
- In-App Updates: Automatic update checking with download progress tracking.
- Local-First: No cloud storageβyour notes stay on your device.
- Framework: Tauri v2 + React 19 (Vite).
- Language: TypeScript.
- Routing: TanStack Router (file-based).
- Editor: TipTap v3.
- Database: None! Notes are stored locally as
.notefiles. - State Management: Zustand.
- Styling: Tailwind CSS v4 + shadcn/ui.
- Linting & Formatting: Biome.
src/
βββ components/ # UI Components
| βββ editor/ # Editor & extensions
| βββ layout/ # Layout components (sidebar, topbar)
| βββ tabs/ # Tab bar components
| βββ ui/ # shadcn/ui components
| βββ workspace-tree/ # Workspace file tree
βββ config/ # Configuration & constants
βββ hooks/ # Domain-specific hooks (CRUD, navigation)
βββ lib/ # Service layer
| βββ app/ # App initialization
| βββ editor/ # Editor utilities
| βββ fs/ # Filesystem abstraction
| βββ notes/ # Note reading/writing & schemas
| βββ opener/ # File & URL opener
| βββ tabs/ # Tab utilities
| βββ updater/ # In-app updater service
| βββ workspace/ # Workspace management & tree building
βββ routes/ # TanStack Router file-based routes
βββ store/ # Zustand stores (tabs, dialogs, UI, etc.)
βββ types/ # Type definitions
βββ index.css # Global styles
βββ main.tsx # Application entry point
src-tauri/ # Tauri backend
βββ capabilities/ # App permissions
βββ icons/ # App icon
βββ src/ # Rust code
βββ tauri.conf.json # Tauri configuration
To set up a development environment for Nemos, ensure you have the required Tauri prerequisites installed.
- Clone the repository:
git clone https://github.com/USpiri/nemos.git
- Navigate to the project directory:
cd nemos - Install dependencies:
pnpm install
- Start the Tauri development server:
pnpm dev
To create a production-ready Tauri build:
pnpm buildSee CONTRIBUTING.md for the full release process.
Quick reference:
pnpm bump <version> # Update version in all config files
git add .
git commit -m "chore: bump version to <version>"
git tag v<version>
git push origin main --tagsPushing a v* tag triggers the CI workflow that builds for macOS, Linux, and Windows, then creates a draft GitHub Release.
Contributions are welcome! See CONTRIBUTING.md for details.
Happy note-taking! π