e6ecab13fa80ee21f01de947b71ae2a8221e79fe
- Added loadNewNote helper function to encapsulate note loading logic - Check for unsaved changes when switching notes - Save previous note if it has unsaved changes - Add 100ms delay before loading new note to ensure save completes - Prevents data loss when switching from unsaved note to another note - Fixes bug where new note content would overwrite unsaved changes
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%