Join the Glyph community
Share feedback, ask questions, and help shape what comes next.
Offline-first desktop note-taking application. Tauri 2 shell with a React 19 / TypeScript / Vite 8 frontend and a Rust backend. Data lives entirely on-disk in a per-space .glyph/ directory backed by SQLite and the local filesystem. No cloud sync, no server.
| Dependency | Version |
|---|---|
| Node.js | ≥ 20 |
| pnpm | ≥ 10 (corepack enable && corepack prepare pnpm@10.28.2) |
| Rust | stable (latest) |
| Xcode CLT | required for macOS native compilation |
| macOS | primary target — full Tauri app dev requires macOS |
# Install frontend dependencies
pnpm install
# Development — frontend only (Vite on :1420)
pnpm dev
# Development — full Tauri app (compiles Rust backend + launches Vite)
pnpm tauri dev
# Production build (tsc + vite build; Tauri hooks run beforeBuildCommand)
pnpm build
# Lint & format (Biome)
pnpm check # check only
pnpm format # auto-fix
# Tests (Vitest)
pnpm test # all tests
pnpm test -- src/lib/diff.test.ts # single file
pnpm test -- -t "test name" # single test by name
# Rust checks
cd src-tauri && cargo check # typecheck
cd src-tauri && cargo clippy # lint
pnpm check && pnpm build && cd src-tauri && cargo checkFrontend: React 19, TipTap 3, Tailwind 4, Radix UI (via shadcn/ui), Motion 12, TanStack Table, cmdk, Zod 4, date-fns, Mermaid 11, highlight.js/lowlight, react-resizable-panels, Sonner, react-hook-form
Backend: Tauri 2 (macos-private-api), rig-core 0.24, rusqlite 0.31 (bundled), notify 6, reqwest 0.12 (rustls), tokio, serde/serde_json/serde_yaml, chrono, uuid, sha2, window-vibrancy, core-text (macOS)
Tooling: Vite 8, TypeScript 5.8, Biome, Vitest 4, Tauri CLI 2
- TypeScript strict mode. No
any— useunknown+ narrowing. - Functional React components only. State via Context, not prop drilling.
- All Tauri IPC through
invoke()fromsrc/lib/tauri.ts. - Rust: atomic writes via
io_atomic, safe paths viapaths::join_under(), SSRF checks vianet.rs. - Hard cutover migrations — no backward-compatibility shims.
- Never log secrets, keys, or sensitive user data.
- ~200 LOC per file guideline; refactor into submodules when exceeded.
Source is open. Official release binaries include a 7-day trial with Gumroad license activation.
- Releases: GitHub Releases
- Purchase: Gumroad
- Details:
docs/licensing.md
macOS only. Windows and Linux are not actively supported. See CONTRIBUTING.md.
