# Ultidrive **Équivalent** : Google Drive **Statut** : Partiel (API proxy WebDAV/OCS) --- ## Résumé Frontend reproduisant à l'identique le comportement et l'interface de Google Drive, potentiellement comme frontend pour Nextcloud ou solution similaire déjà fonctionnelle. ## État d'implémentation réel (mai 2026) ### Déjà implémenté - API backend montée sous `/api/v1/drive` (si Nextcloud activé). - Endpoints list/upload/download/delete, create folder, move, create share. - Client Nextcloud WebDAV/OCS intégré côté serveur. ### Partiel / incomplet - Pas d'upload chunked gros fichiers. - Couverture incomplète des cas drive (copy, corbeille, favoris, récents). - Gestion quotas/permissions simplifiée non finalisée. ### Non commencé - UX frontend Drive de production branchée backend réel. - Édition collaborative docs/feuilles/présentations. - Sync offline-first complète (résolution de conflits). ## Approche technique L'idée est simple : on ne réinvente pas le stockage. On fournit une UX identique à Google Drive mais le backend de stockage est interchangeable : | Mode de stockage | Description | |------------------|-------------| | **WebDAV** | Connecté à un serveur WebDAV (Nextcloud, ownCloud, etc.) | | **S3-compatible** | Bucket S3, MinIO, Backblaze, etc. | | **Nextcloud natif** | Ultidrive = frontend custom pour Nextcloud (API OCS/WebDAV) | ### Contrainte clé : montage local Peu importe le backend, le stockage **doit pouvoir être monté comme un disque local** sur l'appareil de l'utilisateur (comme Google Drive ou Dropbox le permettent). Cela implique un client sync desktop (via Tauri ou en exploitant le client Nextcloud existant). ### Gestion des permissions Les permissions doivent être **simples à gérer** — pas d'ACL complexes. Modèle inspiré de Google Drive : - Propriétaire / Éditeur / Lecteur - Partage par lien (public, restreint, expiration) - Héritage des permissions parent (dossier → contenu) ### Option "frontend Nextcloud" Si c'est plus simple, Ultidrive peut être **purement un frontend** pour Nextcloud : - Nextcloud gère le stockage, la sync, les permissions, le versioning - Ultidrive = interface custom (même codebase/stack que le reste de la suite) - Avantage : on profite de l'écosystème Nextcloud (apps, clients, WebDAV) sans tout recoder ## Points de différenciation vs Google Drive - Auto-hébergeable, stockage sous contrôle total - Backend interchangeable (WebDAV / S3 / Nextcloud) - Montage local natif comme un vrai disque - Interface identique à Google Drive (migration sans friction) - Chiffrement côté client optionnel (zero-knowledge) - Automatisations à l'upload (OCR, classification IA, webhooks) ## Fonctionnalités ### Core - [ ] Upload / download fichiers et dossiers - [ ] Arborescence, favoris, récents, corbeille - [ ] Recherche full-text (contenu des documents) - [ ] Prévisualisation (images, PDF, vidéos, docs) - [ ] Versioning (historique des versions) ### Partage & collaboration - [ ] Partage par lien (public, protégé par mot de passe, expiration) - [ ] Partage avec utilisateurs/groupes (lecture / écriture / admin) - [ ] Édition collaborative temps réel (docs, tableurs, présentations) - [ ] Commentaires sur fichiers ### Sync & montage - [ ] Montage local comme disque (type Google Drive / Dropbox) - [ ] Client desktop sync (Tauri ou Nextcloud client natif) - [ ] WebDAV natif - [ ] Sync sélective (dossiers choisis) - [ ] Offline-first avec résolution de conflits ### Intégration suite - [ ] Pièces jointes Ultimail sauvegardées dans Drive - [ ] Fichiers joints aux événements Agenda - [ ] Stockage médias Ultiphotos - [ ] Partage dans Ultimeet (présentation) ## Intégration Nextcloud — étude technique ### APIs disponibles (confirmé) | Opération | API Nextcloud | Endpoint | |-----------|---------------|----------| | Lister fichiers | WebDAV PROPFIND | `/remote.php/dav/files/{user}/` | | Upload | WebDAV PUT | `/remote.php/dav/files/{user}/{path}` | | Upload gros fichiers | Chunked v2 | `/remote.php/dav/uploads/{user}/` (chunks 5MB-5GB) | | Download | WebDAV GET | `/remote.php/dav/files/{user}/{path}` | | Créer dossier | WebDAV MKCOL | `/remote.php/dav/files/{user}/{path}` | | Déplacer/copier | WebDAV MOVE/COPY | Headers Destination | | Supprimer | WebDAV DELETE | Standard | | Créer un partage | OCS POST | `/ocs/v2.php/apps/files_sharing/api/v1/shares` | | Modifier partage | OCS PUT | `.../shares/{id}` | | Partage public | WebDAV | `/public.php/dav` (depuis NC 29) | ### Permissions — mapping simple confirmé Nextcloud utilise un système bitwise simple qui mappe directement sur notre modèle : | Permission | Bit | Mapping Ultidrive | |------------|-----|-------------------| | Read | 1 | Lecteur | | Update | 2 | Éditeur | | Create | 4 | Éditeur | | Delete | 8 | Éditeur | | Share | 16 | Propriétaire | | All | 31 | Propriétaire | Types de partage supportés : user (0), group (1), public link (3), email (4), federated (6). Options : `password`, `expireDate` (YYYY-MM-DD), `publicUpload`. ### Montage local — solution retenue : rclone | Plateforme | Méthode | Dépendance | |------------|---------|------------| | Linux | `rclone mount` via FUSE | libfuse3 | | macOS | `rclone mount` via macFUSE | macFUSE | | Windows | `rclone mount` via WinFsp | WinFsp | Avantages de rclone vs client Nextcloud Desktop : - Plus stable (le VFS Nextcloud est expérimental sur Linux) - Supporte WebDAV ET S3 avec la même commande - VFS caching configurable (mode off/minimal/writes/full) - Bundlable dans l'app Tauri comme sidecar Stratégie pour Tauri : rclone embarqué en sidecar, lancé/arrêté par l'app, configuration gérée programmatiquement. ### Déploiement Nextcloud headless (API-only) Nextcloud peut tourner en mode backend pur : - Image Docker FPM (pas d'interface web servie directement) - Reverse proxy qui route uniquement `/remote.php/dav`, `/ocs/`, `/public.php/dav` - L'UI Nextcloud n'est jamais exposée aux utilisateurs — seul Ultidrive est le frontend ``` ┌──────────────┐ ┌──────────────────┐ ┌──────────────┐ │ Ultidrive │────▶│ Reverse Proxy │────▶│ Nextcloud │ │ (frontend) │ │ (nginx) │ │ (PHP-FPM) │ └──────────────┘ └──────────────────┘ └──────────────┘ │ │ │ ┌────┴────┐ Routes exposées : │ Storage │ /remote.php/dav/* │ (S3/local) /ocs/v2.php/* └─────────┘ /public.php/dav/* ``` ## Briques technologiques envisagées | Besoin | Option retenue | Alternatives | |--------|----------------|--------------| | Backend fichiers | Nextcloud (PHP-FPM headless) | ownCloud Infinite Scale | | Protocole sync | WebDAV (natif NC) | — | | Object storage | MinIO / S3-compatible (via NC external storage) | Stockage local | | Montage local | rclone (sidecar Tauri) | client NC Desktop | | Édition collaborative | OnlyOffice, Collabora Online | — | | Recherche contenu | Meilisearch (indexation custom) | NC full-text search app | | Auth | Partagée via Ulti Suite (OIDC → NC) | — |