ultisuite-backend/project-plan/ultidrive.md

7.4 KiB

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)