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 :
useDriveControllerpréserve l'appel d'origine àdrive.uploadResumablepour les fichiers de 8 Mio et plus, mais cette méthode est absente deapi/client.jsdans 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.