# 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 : ```bash 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.