A clean, fast, and secure note-taking application inspired by Apple Notes (macOS). NoteTaker aims to provide a simple, distraction-free writing experience while offering powerful features like rich text, folders, tags, sync, and end-to-end encryption.
NoteTaker is a lightweight note-taking application focused on speed, clarity, and data privacy. The app is built for users who want a familiar Notes-like experience with modern conveniences such as rich text formatting, inline images, attachments, tags, and folders.
This README provides instructions for users and contributors, and it’s intentionally written so you can adapt it for a desktop (Electron), web (React/Next), or native (Swift/Kotlin) implementation.
- Rich text editing (bold, italic, lists, headings, code block)
- Markdown support (toggle between rich text and Markdown)
- Folders and pinned notes
- Tags & smart filters
- Full-text search with fuzzy matching
- Attachments and inline images
- Note version history & undo
- Quick note creation (global shortcut)
- Optional end-to-end encrypted sync
- Local export/import (JSON / Markdown)
- Cross-platform support (macOS, Windows, Linux, Web)
- Node.js >= 20 (for web/Electron builds)
- Yarn or npm
- For native builds: Xcode (macOS) or Android Studio (Android)
# clone repo
git clone https://github.com/your-org/notetaker-web.git
cd notetaker-web
# install dependencies
yarn installCheck the readme file in each package for more information frontend backend
- Click the
+ New Notebutton. - Type the title on the first line — the app will use it as the note title automatically.
- Use the toolbar or keyboard shortcuts to format text.
- Create folders from the sidebar and drag notes into folders.
- Tag notes with
#tagsin the editor or add tags via the metadata panel. - Pin frequently used notes to the top of the list.
NoteTaker supports two sync modes:
- Local only — all notes stored locally in an encrypted SQLite file or user-specified directory.
- Cloud Sync (optional) — encrypted sync using your server or third-party storage (e.g., WebDAV, S3 compatible services). Sync is end-to-end encrypted: keys are derived from the user's password and never sent to the server in plaintext. (progress)
Backup strategy:
- Manual export to ZIP/JSON/Markdown.
- Notes are stored in a local database (SQLite / IndexedDB) depending on the platform.
- Attachments are stored in a dedicated
attachments/folder with content-hash filenames. - Encryption: When enabled, notes and attachments are encrypted using AES-256 with keys derived by PBKDF2/Argon2 from the user password.
- Privacy: No telemetry is collected by default. If analytics are necessary, they are opt-in only.
Security considerations:
- Use a strong password to unlock encrypted notes.
- Store your recovery key securely — lost keys mean lost encrypted notes.
- For E2E sync implementations, prefer proven cryptographic libraries and avoid homegrown crypto.
- Frontend: React + TypeScript (or SwiftUI for macOS native)
- Editor: TipTap for rich text + Markdown support
- Backend (optional): Node.js + Express or Serverless functions
- Database: SQLite (desktop) / IndexedDB (web)
- Packaging: Vite
# install
yarn install
# run dev
yarn devCommon environment variables (example .env):
# for optional sync server
SYNC_SERVER_URL=https://sync.yourdomain.com
NODE_ENV=developmentWeb:
Using docer
docker compose up- Unit tests:
yarn test - End-to-end tests:
yarn e2e(Cypress / Playwright recommended)
Planned improvements:
- Collaborative editing (real-time via CRDT)
- Mobile apps (iOS / Android)
- Web clipper / browser extension
- Advanced search filters (date ranges, attachment type)
This project is released under the MIT License. See LICENSE for details.
Inspired by the macOS Notes app and many great open-source editors and libraries.
If you want this README tailored to a specific tech stack (Electron + React, Swift macOS app, or a web-only app), let me know and I will adapt the installation and development sections accordingly.