📝 Note
pro/s3 browser web/architecture
Architecture — S3-Browser-Web
Liens : Decisions · Journal
Vue d’ensemble
Un seul conteneur / processus. Fastify sert le frontend buildé en statique et expose /api/*. Aucune dépendance externe hormis S3-compatible endpoint.
Composants principaux
apps/backend/— Fastify, routes API, gestion profils, proxy S3apps/frontend/— React 19 + Vite + Tailwind + shadcn/ui + ZustandDockerfile— build multi-stage, image finale autonomedocker-compose.yml— service unique, port${S3_EXPLORER_PUBLISH_PORT:-3000}:3000
Flux de données
Browser → :30000 → Fastify /api/* → AWS SDK v3 → S3 endpoint
→ /* (statique React)
Routes API
| Méthode | Route | Rôle |
|---|---|---|
| GET | /api/profiles | Liste profils |
| POST | /api/profiles | Créer profil |
| DELETE | /api/profiles/:id | Supprimer profil |
| GET | /api/buckets | List buckets |
| GET | /api/browse | Lister objets (bucket+prefix) |
| GET | /api/download | Stream objet |
| POST | /api/upload | Multipart upload |
| DELETE | /api/object | Supprimer objet |
| POST | /api/move | Copy + delete |
| GET | /api/presign | URL signée |
Dépendances externes
- S3-compatible endpoint (AWS, MinIO, NAS)
- Volume Docker
s3-explorer-profiles→/data/s3-explorer