2 KiB
Nextcloud Notes Desktop
A fast, cross-platform desktop client for the Nextcloud Notes app, inspired by dgmid/nextcloud-notes-mac-client but rebuilt with a modern Electron + React stack.
Goals
- macOS-first desktop experience with Windows/Linux builds available.
- Fast startup from a local IndexedDB cache.
- Incremental sync using the Nextcloud Notes API
pruneBeforeand chunk cursor support. - Safe credential storage via Electron
safeStoragewhen available; renderer code never receives the stored app password. - ETag-aware updates to avoid overwriting newer server changes.
- Hardened Electron shell with context isolation, renderer sandboxing, blocked permission prompts, denied window popups, and a content security policy.
Development
npm install
npm run dev
Use a Nextcloud app password for login.
Packaging
npm run dist:mac
npm run dist:win
npm run dist:linux
Artifacts are written to release/.
macOS DMG builds must run on macOS because the DMG toolchain and dmg-license dependency are Darwin-only. The dist:mac script builds both Intel and Apple Silicon outputs when run on a Mac.
CI Releases
GitHub Actions builds release artifacts on native runners for Linux, Windows, and macOS. Push a version tag to publish artifacts to a GitHub Release:
git tag v0.1.0
git push origin v0.1.0
The workflow can also be run manually from the Actions tab; manual runs upload workflow artifacts but do not create a GitHub Release unless the run is for a v* tag.
Current Linux outputs:
release/Nextcloud Notes-0.1.0-linux-x86_64.AppImagerelease/Nextcloud Notes-0.1.0-linux-amd64.deb
Notes API
The app uses:
GET /index.php/apps/notes/api/v1/notes?chunkSize=100&pruneBefore=<unix>GET /index.php/apps/notes/api/v1/notes/:idPOST /index.php/apps/notes/api/v1/notesPUT /index.php/apps/notes/api/v1/notes/:idwithIf-MatchDELETE /index.php/apps/notes/api/v1/notes/:id
The sync path handles the API's final pruned ID-only chunk for deletion detection.