# SilverSync

**Status**: v1 (Linux MVP) — planning

A private replacement for iCloud / Google Drive / OneDrive. Contacts, calendar, files, photos, notes — synced across all your SilverMetal devices, encrypted client-side, zero-knowledge to the server.

## v1 scope

- **Contacts** — CardDAV
- **Calendar** — CalDAV
- **Files** — WebDAV with client-side encryption (E2EE)
- **Photos** — file-based, with client-side encryption

v1.1 adds Notes, Tasks.

## Server side

Lives in `SilverLABS/silver-sync-server` (separate repo). Stack:
- **Nextcloud** for files / photos (with E2EE app)
- **Radicale** or **Baïkal** for CardDAV / CalDAV
- Behind SilverVPN by default for transport-layer privacy
- Self-hostable — the same stack runs on a user's home server

## Client-side encryption

- Files: each file encrypted with a per-file content key; content keys wrapped with a user-derived master key (Argon2id from passphrase + account number)
- Server stores only ciphertext + opaque metadata
- Server cannot read filenames in their entirety (filename encryption mode in Nextcloud E2EE)
- Master key never leaves the device

## Per-platform clients

- **Linux**: GNOME / Plasma evolution, native CardDAV/CalDAV via existing tooling; Nextcloud client for files
- **Android**: DAVx⁵ (CardDAV/CalDAV) + Nextcloud Android client (rebranded)
- **Windows**: Nextcloud Windows client (rebranded) + Outlook integration
- **macOS**: Nextcloud macOS client (rebranded) + native Calendar/Contacts integration
- **iOS**: Nextcloud iOS app (rebranded) + iOS native CardDAV/CalDAV providers

## What this is not

- Not a "free Google replacement for everyone" — server costs are real, paid tier funds them
- Not a CDN — files sync between user's devices, not at internet scale
- Not a backup product — this is sync; backup is a separate concern (offer integration with restic/borg later)

## Migration

Documented procedures for users coming from:
- iCloud → SilverSync
- Google → SilverSync
- OneDrive → SilverSync

These guides are critical for onboarding and live in `docs/` of this directory once the client ships.
