Simple Notes Sync
Offline-first Android notes app with WebDAV sync, homescreen widgets, checklists, and full Material You design — your data stays on your own server.
Built because existing note apps either lock you into their cloud or require a complex setup just to get started. The goal was something that works offline without compromise, syncs to a server you control, and stays out of your way.
Core Idea
Every note lives as a JSON file — locally on the device and on your server. No database, no hidden formats, no proprietary lock-in. The sync layer uses WebDAV, which means it works with Nextcloud, ownCloud, or a dead-simple Docker container that takes five minutes to set up.
Offline is the default state. Sync is an enhancement, not a requirement.
Features
- Offline-first — works fully without internet; local storage is always the source of truth
- Flexible views — switch between list and grid layout with 1–5 column scaling
- Interactive checklists — tap to check, drag & drop reordering, auto-sort checked items to the bottom
- Configurable sync triggers — on save, on resume, WiFi-connect, periodic (15/30/60 min), or on boot
- Homescreen widgets — quick-note and note list widgets built with Jetpack Glance
- Smart sorting — by title, date modified, date created, or type
- Parallel sync — downloads multiple notes simultaneously
- Undo/Redo — full history in the note editor
- Desktop integration — Markdown export for Obsidian, VS Code, Typora
- Google Keep import — bring your existing notes along
- Local backup — export and import as encrypted JSON
- Material You — 7 color schemes including AMOLED and Dynamic Color (Android 12+)
- Multilingual — English and German, community translations via Weblate
- Zero tracking — no analytics, no telemetry, no third-party services
- Available on F-Droid — open source, reproducible builds
Architecture
Android — Kotlin, Jetpack Compose, MVVM with StateFlow. File-based JSON persistence, WorkManager for reliable background sync in Doze Mode. Minimum Android 7.0 (API 24).
Widgets — GlanceAppWidget with a dedicated ViewModel. Independent data flow so widgets stay responsive when the main app is closed.
Sync — WebDAV with ETag caching for fast delta syncs. UUID + timestamp conflict resolution ensures no data is silently lost. Docker setup included for self-hosting without any configuration overhead.
Storage — JSON files locally, JSON files in /notes/ on the server, optional Markdown in /notes-md/ for desktop editing.
Self-Hosting
Server setup takes about five minutes:
git clone https://github.com/inventory69/simple-notes-sync.git
cd simple-notes-sync/server
cp .env.example .env
# set a password in .env
docker compose up -d
Then open the app, go to Settings → Sync, enter your server URL, username, and password. That’s it. Your data never leaves your infrastructure.
- platform
- Android 7.0+
- stack
- Kotlin, Jetpack Compose, Material Design 3, WebDAV, Docker
- privacy
- /privacy/simple-notes-sync