💡 What This App Is: Purpose & Vision
This app is a desktop sync client that allows users to create and manage connections to cloud storage providers (starting with Google Drive and Google Photos). The main goal is to enable users to manually sync files from the cloud to a local or network folder using a non-destructive, merge-style backup (i.e., new files are added, changed files are updated, and nothing is deleted).
✨ Key Use Cases
- Back up photos and documents from Google Drive/Photos to a home NAS.
- Set up multiple saved cloud connections with easy re-use.
- View sync history to know what was copied and when.
- Lay the foundation for scheduling, notifications, and cloud-to-cloud transfers in the future.
The long-term vision is to make this a self-hosted alternative to commercial backup/sync clients, offering visibility and control without vendor lock-in.
🧱 Tech Stack and Why We Chose It
⚙️ Electron
- Why: Provides a cross-platform desktop environment using web technologies.
- What it does: Packages the app as a native Windows/macOS/Linux application with access to the filesystem and system dialogs (which are necessary for syncing to local storage).
🔧 Electron Forge
- Why: Simplifies the scaffolding, packaging, and building of Electron apps.
- What it does: Provides plugins (like for Vite) and tooling for smooth dev and production builds.
⚡ Vite
- Why: Fast dev server with instant hot module reload (HMR) and modern ES module bundling.
- What it does: Handles front-end builds efficiently, integrates smoothly with modern frameworks like Svelte.
🎨 Svelte
- Why: Lightweight, beginner-friendly front-end framework with minimal boilerplate and strong reactivity.
- What it does: Manages the UI layer for displaying cloud connections, sync status, and user controls. It compiles away at build time for smaller, faster apps.
📦 TypeScript
- Why: Adds static typing for safer and more maintainable code.
- What it does: Helps avoid runtime bugs and makes VS Code/Copilot suggestions much more accurate.
🚧 Current Status
- The project has a working Electron + Vite + Svelte setup.
- Basic UI scaffolding is in progress.
- The next phase will focus on:
- Defining the connection objects (per cloud provider)
- Implementing file fetching and sync logic
- Saving configurations locally (e.g., via JSON or SQLite)