-The storage layer is built around a `StorageProvider` interface (`core/storage/types.ts`), and there are working implementations for GitHub (`core/storage/github.ts`, via Octokit) and Dropbox (`core/storage/dropbox.ts`), plus a sync engine and a conflict-resolution modal for when local and remote copies diverge. None of this is connected to the UI yet — there's no OAuth flow, and `useStorage` always hands back the local provider — so right now OpenNotes runs entirely local-only in the browser. Getting one of these (GitHub first) wired end-to-end is the next real milestone.
+## Download
-## Tech stack
+**OpenNotes is a Mac app.** Get it (Apple Silicon or Intel) from the [Releases page](https://github.com/harshmathurx/OpenNotes/releases).
-- [Next.js](https://nextjs.org) 16 (App Router, static export) + React 19 + TypeScript
-- [Tailwind CSS](https://tailwindcss.com) v4 + [shadcn/ui](https://ui.shadcn.com) components
-- [Tiptap](https://tiptap.dev) / ProseMirror for the editor, with a custom markdown serializer
-- [Dexie](https://dexie.org) for IndexedDB-backed local storage
-- [Octokit](https://github.com/octokit/octokit.js) and the official [Dropbox SDK](https://github.com/dropbox/dropbox-sdk-js) for the (not-yet-wired) remote providers
-- [Vitest](https://vitest.dev) for tests, ESLint + Prettier for linting/formatting
+The Mac app is not yet signed with an Apple certificate, so macOS will warn on first open — right-click → Open → Open to proceed. Signing is on the roadmap (see RELEASE.md).
-## Running locally
+The same codebase also runs in a browser (`pnpm dev`) for development and as a tech preview, but the Mac app is the product: it is where real files on disk and git sync live.
+
+## Why OpenNotes
+
+Most note tools ask you to give up at least one of three things: your files, your sync, or your AI. OpenNotes is built on the position that you shouldn't have to give up any of them.
+
+- **Files** — notes are plain markdown. Obsidian gets this right but is closed source; Notion holds content on its servers.
+- **Sync** — git, through your own local git and credentials. No hosted sync service, no subscription.
+- **AI** — opt-in, on your own Anthropic/OpenAI key or a local Ollama model. Keys are encrypted on device and never touch a server.
+
+The bet: a small, excellent core plus a clean extension API beats a bloated app.
+
+## What works now
+
+- **Editor** — Tiptap live-markdown editing, slash menu, wikilinks, bubble menu, zen mode, command palette (`Cmd+K`), light/dark themes.
+- **Workspace Home** (`Cmd+Shift+H`) — daily journal, scratchpad, kanban, recent notes.
+- **Styling Studio** — font, size, leading, and canvas width, applied instantly and persisted locally.
+- **Local-first storage** — every keystroke lands in IndexedDB first; works offline; no account required.
+- **Extensions** — bundled: Templates, Export (md/html/zip), Backlinks, AI Co-Writer (opt-in, off by default), and Git Sync (Mac app).
+
+## The Mac app
+
+OpenNotes is a Mac app (`src-tauri`, Tauri v2). It is the home of everything that makes the product sovereign:
+
+- **Real `.md` files** in a notes folder you pick — grep them, back them up, open them in any editor.
+- **Git Sync** through your local git binary with your own SSH/agent credentials — VS Code-style sync, no tokens, we never see a secret.
+- **AI keys and other secrets** live in the macOS Keychain, not in browser storage.
+
+The web build is the same codebase for development and preview, but the Mac app is the product. It is in active development; expect rough edges.
+
+## Extensions
+
+The app ships minimal on purpose; capabilities are extensions. Each one is a plain TypeScript object (a manifest plus `activate(ctx)`) that registers commands, slash items, and panels — no `eval`, no remote code. Third-party developers build against the same stable contract the bundled extensions use. See [docs/extensions.md](docs/extensions.md).
+
+## Where data lives
+
+- **Notes**: IndexedDB in your browser profile on web; real files on disk in the Mac app. There is no OpenNotes backend — note content is never uploaded anywhere by us.
+- **AI keys**: encrypted on device (AES-GCM-256 via WebCrypto on web, Keychain on Mac), never in plaintext, never on a server.
+- **Telemetry**: none. Accounts: none. Token custody: none.
+
+Clearing browser site data removes locally stored notes from that profile — if your notes matter, keep them in a synced folder or an independent copy.
+
+## Roadmap
+
+1. Mac app + git sync, hardened end to end.
+2. Community extension directory.
+3. Dropbox / folder-based storage providers.
+4. PWA polish and offline installability.
+
+## Local development
```bash
+corepack enable
pnpm install
pnpm dev
```
-Open [http://localhost:3000](http://localhost:3000).
+Then open http://localhost:3000. For the Mac app (once the Tauri toolchain is set up): `pnpm tauri:dev`.
-Other useful scripts:
+## Validation commands
```bash
-pnpm build # static export (output goes to dist/)
-pnpm lint # eslint
-pnpm typecheck # tsc --noEmit
-pnpm vitest # run tests
-pnpm format # prettier --write
+pnpm exec eslint .
+pnpm exec tsc --noEmit
+pnpm exec vitest run
+pnpm exec next build
```
+## Contributing
+
+Contributions welcome — extensions most of all. See [CONTRIBUTING.md](CONTRIBUTING.md); new extension ideas have their own friendly issue template ("Extension idea").
+
## License
-MIT — see [LICENSE](./LICENSE).
+[Apache-2.0](LICENSE)
diff --git a/RELEASE.md b/RELEASE.md
new file mode 100644
index 0000000..5d611fd
--- /dev/null
+++ b/RELEASE.md
@@ -0,0 +1,86 @@
+# Releasing OpenNotes
+
+OpenNotes desktop (macOS) is distributed as a DMG via
+[GitHub Releases](https://github.com/harshmathurx/OpenNotes/releases). Builds are
+produced by the [`release.yml`](.github/workflows/release.yml) GitHub Actions
+workflow — never by hand.
+
+## Download (for users)
+
+1. Go to **https://github.com/harshmathurx/OpenNotes/releases** and open the
+ latest release.
+2. Download the DMG that matches your Mac:
+ - **Apple Silicon** (M1/M2/M3/M4): `OpenNotes_+ OpenNotes +
+- A markdown editor that stores your files in GitHub, Dropbox, or just - your browser. No subscription. No lock-in. No server. +
+ A calm, local-first markdown workspace. Plain text you can grep, + sync, and keep — no accounts, no lock-in, no noise.
-- Your notes in a private repo. Free version history. Every change - is a commit. + Every note is a plain markdown file. Open it in any editor, move + it with any tool, keep it forever.
- Syncs everywhere Dropbox does. No new accounts needed. Works - offline. + Bring your own model and your own keys. Assistance when you ask + for it — silence when you don't.
- No account needed. Files saved in your browser with IndexedDB. - Connect storage later. + Serif or sans, wide or narrow, light or dark. A writing surface + tuned until it disappears.
- Files live in your storage, not ours. We never see what you - write. -
-- Every file is a .md file. No proprietary format. Export - anytime. -
-- Edit without internet. Changes sync when you are back online. -
-+ OpenNotes is Apache 2.0. Read the code, file an issue, fork the + whole thing — it belongs to everyone. +
+ + github.com/harshmathurx/OpenNotes +