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

67 lines
3.6 KiB
Markdown

# 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.