snapnotes documentation
Choose a version
Version Other / archived
Status: private early development. SnapNotes has no public release, no published build, and no store listing. The repository is private while development continues, and this page describes the state of its source code, not a shipped product.
SnapNotes #
SnapNotes is an Android application written in Kotlin with Jetpack Compose. It is positioned in the project’s own README as a mobile companion to SnapDock: a viewer-first Markdown reader with light editing, built offline-first around local storage. That positioning describes intent; the sections below describe only what the current source implements.
Verified implementation status #
The following behavior exists in the current source:
- A single-activity Kotlin app using Jetpack Compose with Material 3 and the adaptive navigation suite, which presents a bottom bar on compact screens and a navigation rail on larger screens.
- Three screens reachable from navigation: Files (the document list), the document viewer, and Pairing.
- The Files screen lists documents stored locally with two-line content previews and opens the selected document in the viewer.
- The viewer renders Markdown through the Mike Penz
multiplatform-markdown-renderer-m3library and toggles between reading and editing. Editing uses a plain text field, and every change is written back to the local database immediately. - The Pairing screen accepts a server URL and an auth token entered by hand and stores them on the device. Pairing succeeds when both values are present.
- Local storage uses a Room database with one
documentstable (identifier, title, content, last-modified time, and a dirty flag) plus DataStore preferences holding the paired server URL and token. - An empty database is seeded with three sample notes (Meeting Notes, Project Ideas, Shopping List) on first launch.
- Dependency injection uses Hilt, and the UI follows an MVVM structure.
Build configuration #
The Gradle configuration declares:
| Setting | Value |
|---|---|
| Application ID | com.zforddev.snapnotes |
| Minimum SDK | 24 (Android 7.0) |
| Target and compile SDK | 37 |
| Kotlin | 2.4.10 |
| Android Gradle Plugin | 9.3.1 |
No release artifacts, distribution channel, or store listing exist. The release build type exists in configuration but nothing publishes it, so running SnapNotes currently requires building from source with the included Gradle wrapper in Android Studio or a local Gradle installation.
What is not implemented #
Several capabilities described in the repository README are roadmap material and are not present in the source:
- No network access of any kind. The manifest declares no permissions, including Internet access, so the installed app cannot transmit data off the device. Ktor networking is declared as a dependency but no code uses it.
- No background sync.
syncDocuments()is an explicit placeholder for a future network implementation. WorkManager is not integrated. - No QR pairing. CameraX libraries are declared but no camera or scanning code exists; pairing is manual entry only, and the saved URL and token are never validated against any server.
- No workspace file browsing. Despite the screen name, Files lists rows from the local Room database. It does not browse device storage or open external Markdown files, and there is no import or export path.
- No document management interface. Documents can be read and edited, but creation, renaming, and deletion have no UI wiring.
Data, privacy, and backup #
All user content stays on the device:
- Notes live in the app-private Room database, and pairing details live in app-private DataStore preferences. Clearing app data or uninstalling removes them.
- Because the manifest grants no Internet permission, the app cannot send documents, tokens, or any other data to a remote service.
- Android auto-backup is enabled with default rules, so app data may be included in the device’s standard cloud backup under Android’s normal backup behavior. No custom backup, export, or restore feature exists in the app.
Relationship to SnapDock #
SnapNotes is part of the broader SnapDock ecosystem alongside the archived SnapBoard experiment. Its pairing screen anticipates a future SnapDock-Server connection, but no integration protocol, sync engine, or shared workspace format is implemented today. For the maintained desktop editor, use the current SnapDock documentation.
Stated direction #
The repository README plans improved rendering fidelity, code-block and table support, conflict-safe synchronization, and deeper SnapDock-Server integration before a first public release. These are project-stated intentions without dates, not committed features, and this page will be revised as implemented behavior changes.