GooDrive/ARCHITECTURE.md
Louis Mazin 97a25e4df8 nice
2026-10-13 21:15:53 +02:00

3.6 KiB

GoodDrive — organisation du projet

Cette refonte réorganise le code uniquement. Elle ne modifie pas les URLs, les permissions, les modèles, les migrations, les composants shadcn/ui, les variables .env, Docker ni le stockage.

Frontend (frontend/src/)

Emplacement Responsabilité
App.jsx Point d'entrée React : restauration de session et choix de la page
pages/LoginPage.jsx Connexion et présentation de l'espace privé
pages/DrivePage.jsx Assemblage de la page Drive, dépôt de fichiers et modales
hooks/useDriveController.js État du navigateur de fichiers, recherche, actions, uploads et API
config/navigation.js Sections et titres de navigation
lib/drive-format.js Formatage des tailles/dates, types et couleurs de fichiers
components/drive/DriveSidebar.jsx Navigation latérale, stockage utilisé, déconnexion
components/drive/DriveToolbar.jsx Barre supérieure, recherche, thème, actualisation, import
components/drive/DriveExplorer.jsx Fil d'Ariane, filtres/tri, états et liste des fichiers
components/drive/FileList.jsx Affichage tableau
components/drive/FileGrid.jsx Affichage grille
components/drive/FileGlyph.jsx Icônes de fichiers/dossiers
components/drive/StatusBanner.jsx Messages d'information et d'erreur
components/drive/DriveDialogs.jsx Assemblage des fenêtres
components/drive/dialogs/ItemFormDialog.jsx Nouveau dossier, renommage et déplacement
components/drive/dialogs/ItemActionsDialog.jsx Choix des actions sur un élément
components/drive/dialogs/DeleteDialog.jsx Confirmation de suppression définitive
components/drive/dialogs/PreviewDialog.jsx Aperçu image, PDF et audio
api/client.js Client Axios existant — inchangé
components/ui/ Composants shadcn existants — inchangés

Règle pratique : modifier l'affichage dans components/drive, le comportement dans hooks/useDriveController.js, et les appels HTTP dans api/client.js.

Backend (backend/drive/)

Emplacement Responsabilité
views.py Réexport des endpoints existants, pour conserver urls.py inchangé
services.py Droits, arborescence, validation des noms, sérialisation
views_items.py Listes, stats, dossiers, renommage, partage, favoris et corbeille
views_transfers.py Imports classiques, imports par blocs et reprise
views_content.py Liens de téléchargement temporaires et envoi du contenu
models.py, urls.py, migrations/ Inchangés

Installation

Copier les fichiers du ZIP en respectant l'arborescence du dossier GoodDrive/, puis reconstruire/redémarrer frontend et backend. Aucune migration SQL n'est nécessaire :

docker compose up -d --build frontend backend

Dans Pterodactyl, utiliser le redéploiement habituel de l'image/site à la place.

Contrôles effectués

  • Syntaxe JavaScript/JSX analysée, imports locaux résolus et références JavaScript vérifiées.
  • Python compilé avec compileall.
  • Présence des 25 fonctions Django et comparaison de leurs corps avec l'archive source.
  • Le build Vite complet et les tests Django sur MySQL ne peuvent pas être exécutés ici.

Remarque : useDriveController préserve l'appel d'origine à drive.uploadResumable pour les fichiers de 8 Mio et plus, mais cette méthode est absente de api/client.js dans l'archive fournie. Cela préexistait au refactoring et doit être corrigé séparément avant de considérer les gros imports comme opérationnels.