📝 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 S3
  • apps/frontend/ — React 19 + Vite + Tailwind + shadcn/ui + Zustand
  • Dockerfile — build multi-stage, image finale autonome
  • docker-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éthodeRouteRôle
GET/api/profilesListe profils
POST/api/profilesCréer profil
DELETE/api/profiles/:idSupprimer profil
GET/api/bucketsList buckets
GET/api/browseLister objets (bucket+prefix)
GET/api/downloadStream objet
POST/api/uploadMultipart upload
DELETE/api/objectSupprimer objet
POST/api/moveCopy + delete
GET/api/presignURL signée

Dépendances externes

  • S3-compatible endpoint (AWS, MinIO, NAS)
  • Volume Docker s3-explorer-profiles/data/s3-explorer

Schémas