notesme logo

notesme

A lightweight, secure, and self-hosted note-taking application with end-to-end encryption, built with FastAPI and Vanilla JS.

HtmlAPI FrameworksSelf-HostedHTMLMIT 31 1Health 63
GitHub

What is it?

What it is

NotesMe is a self‑hosted, lightweight note‑taking application that runs in a single Docker container. It stores notes in an encrypted SQLite database, offers a vanilla‑JS frontend, and can be deployed with one command.

Why it exists

The project was created to fill a gap for a simple yet feature‑rich self‑hosted note app that supports folder organization, automatic versioning, secure backups, and a clean user experience without the bloat of large frameworks.

Who should use it

Self-hosters looking for lightweight note-taking solutionsUsers prioritizing privacy and end-to-end encryption at restDevelopers who prefer zero-framework, high-performance frontendsIndividuals needing simple version control for their notesUsers wanting a Progressive Web App (PWA) for mobile/desktop use

Who should avoid it

Users who do not want to manage their own server or Docker containersUsers requiring advanced AI-integrated note-taking featuresUsers who cannot safely store and manage an encryption key

How it works

A quick walkthrough in plain English

How notesme works

Step 1 of 3

You interact with it

Open notesme, send a request, or connect it to your stack.

Features

Offline Mode (Read Only)
Installable as PWA on mobile and desktop
Share from other apps
Dark/Light theme with system detection
Fully responsive interface
Zero JavaScript frameworks — instant load times
Keyboard shortcuts (Ctrl+N, Ctrl+B/I/U, Ctrl+K, etc.)
Unlimited nested folders and subfolders
Pin important notes to the top
Soft-delete trash with restore and configurable auto-purge
Automatic version history (snapshots every 5 minutes, up to 50 versions per note)
Export notes to plain text (.txt) or HTML
Full WYSIWYG editor (bold, italic, underline, colors, headings, quotes, lists, code blocks)
Interactive checklists with real-time checkbox support
Drag & drop or paste images with visual resizing handles
Link insertion with URL auto-detection and Ctrl+K shortcut
Real-time autosave
AES encryption at rest (Fernet / AES-128-CBC + HMAC-SHA256) — optional
Argon2id password hashing (OWASP 2024 recommendation)
In-memory full-text search — decrypted content never touches disk
XSS protection via DOMPurify (client) and html.escape() (server)
Protection against path traversal, malicious file uploads, brute-force attacks
JWT-based authentication with configurable session duration
Admin panel for user management
Full data isolation — each user's notes, folders, trash private
Docker or Docker Compose deployment — one command
MIT License

Advantages

  • Open source (MIT)
  • Active HTML ecosystem
  • Self-hosted deployment options

Disadvantages

  • Requires operational ownership for self-hosted setups
  • Community support varies by project maturity

Installation

docker

# 1. Create the environment file
cp .env.example .env

# 3. Edit .env with your values
#    - Set a strong password
#    - Generate an encryption key (see below)
vim .env

# 4. Adapt the volume path

# 5. Launch
docker run -d -p 8080:8080 -v ./:/app/data ghcr.io/stban1983/notesme:latest

FAQ

How do I ensure my notes are secure and encrypted?

Encryption is optional and must be manually enabled by setting an `ENCRYPTION_KEY` in your `.env` file. When enabled, note content is encrypted at rest using AES-128-CBC via the Fernet library. Note that you must keep this key safe; if lost, your encrypted notes cannot be recovered.

Can I use NotesMe while offline?

Yes, NotesMe is a Progressive Web App (PWA) that supports an offline mode for reading notes. It can also be installed as a native app on both mobile and desktop devices.

How does the versioning system work?

The application automatically takes snapshots of your notes every 5 minutes. It maintains a history of up to 50 versions per note, allowing you to track changes and revert if necessary.

How do I back up my data?

To fully back up your application, you must back up the `./data` directory (which contains your SQLite database and uploaded images) as well as your `.env` file containing your encryption key.

What formats can I use to export my notes?

You can export any note into plain text (.txt) or HTML format through the history/export functionality.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for notesme

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
notesme | MushyBook