5a925dc50e5fa9ebf944f32bf3ce699ebe5a0a77
Major Changes: - Switch from Nextcloud Notes API to direct WebDAV file access - Notes stored as .txt files with filename-based IDs for reliability - Implement safer sync strategy without clearNotes() to prevent data loss - Add ETag-based conflict detection for concurrent edits - Add category color sync to .category-colors.json on server - Show neutral gray badges for categories without assigned colors Technical Improvements: - Replace numeric IDs with filename-based string IDs - Update Note type to support both number and string IDs - Implement WebDAV methods: fetchNotesWebDAV, createNoteWebDAV, updateNoteWebDAV, deleteNoteWebDAV - Add CategoryColorsSync service for server synchronization - Remove hash-based color fallback (only show colors when explicitly set) Bug Fixes: - Fix category badge rendering to show all categories - Prevent note loss during sync operations - Improve offline-first functionality with better merge strategy
Tauri + React + Typescript
Nextcloud Notes - Cross-Platform Desktop App
A modern, cross-platform desktop application for Nextcloud Notes built with Tauri + React + TypeScript.
Features
- ✅ Cross-platform: macOS, Linux, Windows
- ✅ Lightweight: ~600KB binary (vs 150MB+ Electron)
- ✅ Modern UI: React + TailwindCSS
- ✅ Full sync: Create, edit, delete, favorite notes
- ✅ Search & filter: Find notes quickly, filter by favorites
- ✅ Auto-save: Changes save automatically after 1.5s
- ✅ Secure: Credentials stored in system keychain (localStorage for now)
- ✅ Background sync: Auto-sync every 5 minutes
Prerequisites
- Rust: Install from https://rustup.rs/
- Node.js: v18+ recommended
- Nextcloud instance with Notes app enabled
Development
# Install dependencies
npm install
# Run in development mode
npm run tauri dev
# Build for production
npm run tauri build
First Launch
- Enter your Nextcloud server URL (e.g.,
https://cloud.example.com) - Enter your username
- Enter your password or App Password (recommended)
- Generate at: Settings → Security → Devices & Sessions in Nextcloud
- Click Connect
Building for Distribution
macOS
npm run tauri build
# Output: src-tauri/target/release/bundle/macos/
Linux
npm run tauri build
# Output: src-tauri/target/release/bundle/appimage/ or .deb
Windows
npm run tauri build
# Output: src-tauri/target/release/bundle/msi/
Tech Stack
- Tauri: Rust-based native wrapper (~600KB)
- React 18: UI framework
- TypeScript: Type safety
- TailwindCSS: Utility-first styling
- Vite: Fast build tool
Advantages over Native Swift App
- ✅ Cross-platform: One codebase for macOS, Linux, Windows
- ✅ No SwiftUI state issues: React's state management is mature
- ✅ Smaller binary: Tauri is much lighter than Electron
- ✅ Easier to maintain: Web technologies vs platform-specific code
- ✅ No Xcode required: Build on any platform
Recommended IDE Setup
Description
Languages
TypeScript
93.5%
CSS
3.5%
JavaScript
2.3%
Rust
0.4%
HTML
0.3%
