67 lines
3.6 KiB
Markdown
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.
|