Simple Notes Sync - Privacy-First Note-Taking

Simple Notes Sync - Note List with Material You Design Note Editor with Checklist and Markdown Support Settings with 7 Categories and Sync Configuration

Built because existing note apps either lock you into their cloud or require complex self-hosted setups. Needed something that works offline, syncs to a server you control, and doesn’t drain your battery.

What’s New in v1.8.2

The app has evolved significantly since the initial Compose rewrite. Here’s where things stand today:

Glance Widgets (v1.7+) – homescreen widgets built with Jetpack Glance show your latest notes or a quick-add button, styled with Material 3 Dynamic Colors to match your wallpaper.

True Offline-First Architecture – local file-based JSON storage is the single source of truth. Create, edit, and delete notes without any connectivity. Sync happens automatically via WorkManager when WiFi is available.

Interactive Checklists – tap to toggle, long-press to reorder, auto-sort checked items to the bottom. Exports as GitHub-flavored Markdown (checked/unchecked task syntax), full round-trip compatible with Obsidian.

Swipe Gestures & Undo – swipe-to-delete with a Snackbar undo window. Batch operations via selection mode for deleting or exporting multiple notes at once.

Smart Conflict Resolution – E-Tag caching makes syncs ~20× faster. When conflicts arise, UUID + timestamp logic ensures no data is silently lost.

Full Feature Set

Architecture

Android App – Kotlin, Jetpack Compose, MVVM with StateFlow, file-based JSON persistence via NotesStorage, WorkManager for reliable background sync even in Doze Mode. Min SDK 24 (Android 7.0).

Glance WidgetsGlanceAppWidget + GlanceAppWidgetReceiver with a dedicated WidgetViewModel. Independent data flow so widgets stay responsive even when the app is closed.

WebDAV Protocol – standardized, widely supported, no custom server needed. Included Docker setup uses bytemark/webdav with automatic HTTPS via reverse proxy.

Storage Model – file-based JSON locally (no SQL database), JSON files in /notes/ on the server, optional Markdown in /notes-md/ for desktop editing. Each note has a UUID and timestamps for conflict resolution.

Setup Time – 5 minutes for the server (Docker one-liner), 2 minutes for app configuration.