Skip to content

thanhncc391/note-taker

Repository files navigation

NoteTaker

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.


Table of Contents


Overview

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.

Features

  • 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)

Getting Started

Prerequisites

  • Node.js >= 20 (for web/Electron builds)
  • Yarn or npm
  • For native builds: Xcode (macOS) or Android Studio (Android)

Installation (Web)

# clone repo
git clone https://github.com/your-org/notetaker-web.git
cd notetaker-web

# install dependencies
yarn  install

Check the readme file in each package for more information frontend backend

Usage

Creating notes

  • Click the + New Note button.
  • 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.

Organizing notes

  • Create folders from the sidebar and drag notes into folders.
  • Tag notes with #tags in the editor or add tags via the metadata panel.
  • Pin frequently used notes to the top of the list.

Sync & Backup & Backup

NoteTaker supports two sync modes:

  1. Local only — all notes stored locally in an encrypted SQLite file or user-specified directory.
  2. 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.

Data Storage & Security

  • 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.

Developer Guide

Tech Stack (suggested)

  • 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

Local development

# install
yarn install

# run dev
yarn dev

Common environment variables (example .env):

# for optional sync server
SYNC_SERVER_URL=https://sync.yourdomain.com
NODE_ENV=development

Building & Packaging

Web:

Using docer

docker compose up

Testing

  • Unit tests: yarn test
  • End-to-end tests: yarn e2e (Cypress / Playwright recommended)

Roadmap

Planned improvements:

  • Collaborative editing (real-time via CRDT)
  • Mobile apps (iOS / Android)
  • Web clipper / browser extension
  • Advanced search filters (date ranges, attachment type)

License

This project is released under the MIT License. See LICENSE for details.

Acknowledgements

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages