Skip to content

slepingdragon/ABetterNotePad

Repository files navigation

ABetterNotePad

A local-only, themeable desktop notepad for Windows that does what Notepad can't: take a screenshot and it loads instantly as a tab, on-device OCR reads the text, and you click any value — an API key, URL, token — to copy it in one click. Everything stays on your machine.

  • 🔒 Local-only / offline — zero network egress (the only exception is an opt-in update check). On-device OCR; your notes and credentials never leave the device.
  • 🆓 Free & open-source — MIT licensed.
  • 🎨 Themeable — black by default, fully customizable.

Status: early development. Story 1.1 (application shell) is the current foundation; see _bmad-output/planning-artifacts/epics.md for the roadmap.

Tech stack

Tauri 2 (Rust core + WebView2) · React 19 + TypeScript + Vite · SQLite (SQLCipher + FTS5) · on-device OCR via the Windows OCR API. See _bmad-output/planning-artifacts/architecture.md.

Develop

Prerequisites: Node 22.12+ (or 24) and the Rust toolchain (rustup; the repo pins 1.95.0 via rust-toolchain.toml), plus the Tauri prerequisites (WebView2 ships with Windows 11; MSVC build tools).

npm install
npm run tauri dev      # or: double-click play.cmd (locked dev port 1420, hot reload)

Other scripts: npm run build (type-check + Vite build) · npm test (Vitest) · npm run tauri build (installer).

Project structure

  • src/ — React frontend (features, stores, api/ IPC layer, styles).
  • src-tauri/ — Rust core (commands/ thin handlers, storage/, ocr/, capture/, crypto/ services).
  • site/ — static Project Site (added in Epic 5).
  • _bmad-output/planning-artifacts/ — PRD, architecture, epics, readiness.

Contributing conventions

  • All TS↔Rust IPC goes through src/api/ — components never call invoke/listen directly.
  • Business logic lives in Rust services; commands/* handlers stay thin.
  • IDs are UUID v7; timestamps are RFC 3339 UTC. camelCase across the IPC boundary; snake_case in Rust/SQL.
  • Never log or persist secret plaintext. Forward-only DB migrations.
  • IPC DTO sync: the Rust DTOs and src/api/types.ts must not drift. When the first IPC DTO is introduced (Story 1.2/1.3), adopt ts-rs to generate types.ts from the Rust structs or add a CI check that fails on drift. Decide and wire it then.

License

MIT © 2026 Brady J Bania

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors