Frontend Stack
Core Framework
UI framework with modern hooks and concurrent features
Type-safe JavaScript with strict mode enabled
Build tool with fast HMR and optimized production builds
UI & Styling
Utility-first CSS framework with custom design tokens
Accessible headless UI primitives (Dialog, Popover, DropdownMenu, etc.)
Animation library for smooth transitions (successor to Framer Motion)
Pre-built accessible components built on Radix UI + Tailwind
Editor & Rich Text
Headless rich text editor framework
@tiptap/react- React integration@tiptap/markdown- Markdown parsing/serialization@tiptap/starter-kit- Common extensions@tiptap/extension-*- Task lists, tables, links, images
ProseMirror core (powers TipTap)
Data & Forms
Headless table library for database views
Performant form validation
TypeScript-first schema validation
Zod integration for react-hook-form
Canvas & Visualization
Node-based canvas editor (formerly React Flow)
Utilities
Command palette component (Command+K)
Toast notifications
Dark mode theme switching
Type-safe CSS class variants
Conditional class names + Tailwind class merging
Resizable sidebar/panel layouts
Backend Stack
Core Framework
Rust-based framework for building desktop apps
tauri- Core runtime@tauri-apps/api- JavaScript bindings@tauri-apps/cli- Build tooling
Systems programming language (see
Cargo.toml)Tauri Plugins
Native file picker dialogs
Open files/URLs in default system apps
Persistent key-value settings storage
Auto-update functionality
System notifications
Process management for Codex app-server
Serialization & Data
Rust serialization framework
JSON serialization for IPC and file storage
YAML frontmatter parsing
SQLite bindings with embedded SQLite
Filesystem & I/O
Cross-platform filesystem watcher
SHA256 hashing for content-addressed storage
Hex encoding for hash strings
Base64 encoding for binary data URLs
Networking
HTTP client for link preview fetching
- Uses
rustlsinstead of OpenSSL blocking- Synchronous APIjson- JSON body supportstream- Streaming responses
URL parsing and validation
AI & LLM
Multi-provider LLM framework
- OpenAI, Anthropic, Gemini, Ollama support
- Tool calling & structured outputs
JSON Schema generation for AI tool definitions
Utilities
UUID generation for note IDs
Date/time handling (used for daily notes)
Regular expressions for parsing
Structured logging
Log filtering and formatting
Async runtime for AI streaming
Async utilities
Additional Tokio utilities
Platform-Specific
macOS window blur effects
macOS font enumeration
Development Tools
Linting & Formatting
Fast linter + formatter (replaces ESLint + Prettier)
- Auto-organizes imports
- Enforces code style
- TypeScript-first
Testing
Vite-native test runner
- Unit tests for utilities
- Integration tests for editor extensions
Type Definitions
React type definitions
React DOM type definitions
Package Manager
Fast, disk-efficient package managerOnly builds native modules when needed:
package.json
Icon Library
Open-source React icon library
Core icon set
Version Matrix
| Component | Version | Notes |
|---|---|---|
| Node.js | 18+ | Required for pnpm |
| Rust | 1.70+ | 2021 edition |
| macOS | 11+ | Big Sur or later |
| Windows | 10+ | 64-bit |
| Linux | Ubuntu 20.04+ | Debian-based |
Architecture Decisions
Why Tauri over Electron?
- Smaller bundle size (~10MB vs 100MB+)
- Lower memory footprint
- Native system integration
- Rust security guarantees
Why TipTap over other editors?
- TypeScript-first
- Full control over markdown serialization
- Extensible plugin system
- ProseMirror foundation (battle-tested)
Why Biome over ESLint/Prettier?
- 10-100x faster
- Single tool for linting + formatting
- Built in Rust
- Auto-import organization
Why Rig over LangChain?
- Rust-native (type-safe)
- Multi-provider abstraction
- Streaming support
- Tool calling with JSON schema