Fast cross-platform desktop client for Nextcloud Notes
Find a file
Daniel 6bc84078f0
Some checks failed
Release / Build Linux (push) Has been cancelled
Release / Build macOS (push) Has been cancelled
Restore stable desktop runtime
2026-05-15 18:29:06 +02:00
.forgejo/workflows Use Forgejo runners for release builds 2026-05-15 16:39:18 +02:00
.github/workflows Initialize Nextcloud Notes desktop app 2026-05-15 16:24:17 +02:00
build Initialize Nextcloud Notes desktop app 2026-05-15 16:24:17 +02:00
electron Restore stable desktop runtime 2026-05-15 18:29:06 +02:00
src Restore stable desktop runtime 2026-05-15 18:29:06 +02:00
.gitignore Initialize Nextcloud Notes desktop app 2026-05-15 16:24:17 +02:00
index.html Restore stable desktop runtime 2026-05-15 18:29:06 +02:00
package-lock.json Restore stable desktop runtime 2026-05-15 18:29:06 +02:00
package.json Restore stable desktop runtime 2026-05-15 18:29:06 +02:00
README.md Use Forgejo runners for release builds 2026-05-15 16:39:18 +02:00
vite.config.js Initialize Nextcloud Notes desktop app 2026-05-15 16:24:17 +02:00

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 pruneBefore and chunk cursor support.
  • Safe credential storage via Electron safeStorage when 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

Forgejo Actions builds release artifacts on registered runners. The Linux job uses the existing ubuntu-latest runner; the macOS job expects a Forgejo runner registered with the macos-latest label so it can build DMG/zip artifacts natively. Push a version tag to publish artifacts to a Forgejo 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.AppImage
  • release/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/:id
  • POST /index.php/apps/notes/api/v1/notes
  • PUT /index.php/apps/notes/api/v1/notes/:id with If-Match
  • DELETE /index.php/apps/notes/api/v1/notes/:id

The sync path handles the API's final pruned ID-only chunk for deletion detection.