Celestine is a local-first desktop notebook for handwriting, rich text, images, and diagrams on one infinite canvas. It is built with Tauri, Rust, React, and TypeScript.
Alpha: The core canvas and desktop shell work. Handwriting recognition and native platform pen adapters are planned but are not implemented yet.
- Infinite pan-and-zoom canvas
- Pressure-sensitive vector ink using Pointer Events
- one-to-one pen tracking with pressure-aware stroke width
- local English handwriting recognition on macOS using Apple Vision
- Eraser, text, shape, image, and handwriting-conversion tool modes
- Rich-text cards with headings, lists, checklists, code, tables, and Markdown math notation
- Image paste and local upload
- Folders, tags, favorites, search, and recent-note ordering
- Dark and light themes
- Configurable single-key shortcuts for XP-Pen per-app mappings
- Debounced local autosave through the Rust backend
- Markdown export with Celestine metadata comments for non-Markdown canvas objects
Requirements:
- Node.js 22 or newer
- Rust 1.88 or newer
- The platform prerequisites from the Tauri documentation
npm install
npm run tauri devFor browser-only UI development:
npm run devCreate a production frontend build:
npm run buildConfigure the same keys in the tablet driver's per-application profile:
| Command | Key |
|---|---|
| Select | V |
| Pen | B |
| Eraser | E |
| Text | T |
| Shape | S |
| Convert handwriting | H |
Hold Space and drag to pan. Use the wheel or trackpad to zoom.
Celestine does not require an account and does not send note content to a server. The Tauri app atomically saves the workspace to workspace.json in the operating system's application-data directory. Browser-only development uses localStorage.
Images are currently embedded in the workspace as data URLs. Moving them into a content-addressed asset directory is planned before large libraries are supported.
Rich text exports as ordinary Markdown. Math annotations use $...$, and future diagram text can use fenced mermaid blocks. Ink and spatial shapes do not have a standard Markdown representation, so exports include HTML metadata comments for those objects. A portable Celestine sidecar format is planned to preserve the complete canvas.
src/ React interface and canvas engine
src/components/ Library, editor, tools, settings, rich-text cards
src/lib/ Persistence bridge and Markdown export
src-tauri/ Tauri configuration and Rust persistence backend
See docs/ARCHITECTURE.md for the data flow and platform strategy.
- Native pen diagnostics for pressure, tilt, eraser, and hover
- On-device English handwriting recognition
- Closest-font selection and user-selected handwriting fonts
- Lasso selection and editable diagram connectors
- Undo/redo history and crash-recovery journal
- Content-addressed image assets and portable workspace export
- Windows Ink and Linux tablet validation
Keep changes focused and preserve local-first behaviour. Run the TypeScript build and Rust checks before opening a pull request:
npm run build
cargo check --manifest-path src-tauri/Cargo.toml