How joelfrens/fts works
FTS is a Laravel image-upload and storage application with local and Azure backends. A browser user submits an image through the Vue upload UI to the API; the route dispatches to the controller, which delegates processing, storage, and audit-row creation to the upload service. Image processing validates and resizes before storage; driver selection is bound by the service provider. The README documents these flows and capabilities; edges for unsampled subsystems are omitted where their runtime wiring is not evidenced.
Main entry points: ImageUploadService.php Upload orchestration · ImageStorageInterface.php Storage contract · StoredImage.php Stored image DTO · AppServiceProvider.php Driver binding
Components 23
Upload client
- Upload UI
resources/js/pages/ImageUpload.vue
HTTP entry
- Images API route
routes/api.php - Laravel routing
bootstrap/app.php - Image controller
app/Http/Controllers/ImageController.php - Upload validation
app/Http/Requests/StoreImageRequest.php - Inertia middleware
app/Http/Middleware/HandleInertiaRequests.php - User model
app/Models/User.php - User factory
database/factories/UserFactory.php
Image workflow
- Upload orchestration
app/Services/ImageUploadService.php - Image processor
app/Services/ImageProcessor.php - Resize options
app/Data/ImageProcessingOptions.php - Processed image DTO
app/Data/ProcessedImage.php - Upload result DTO
app/Data/UploadedImage.php - Image audit model
app/Models/Image.php
Storage backends
- Storage contract
app/Contracts/ImageStorageInterface.php - Stored image DTO
app/Data/StoredImage.php - Storage driver enum
app/Enums/StorageDriver.php - Driver binding
app/Providers/AppServiceProvider.php - Local storage
app/Services/Storage/LocalImageStorage.php - Azure storage
app/Services/Storage/AzureImageStorage.php
Other components
- Browser user
- Azure Blob Storage
- Images database
Connections 24
- Browser user → Upload UI: submits image
README.md - Upload UI → Images API route: posts upload
README.md - Laravel routing → Images API route: loads route
bootstrap/app.php - Images API route → Image controller: dispatches to
routes/api.php - Image controller → Upload validation: validates with
app/Http/Controllers/ImageController.php - Image controller → Upload orchestration: delegates upload
app/Http/Controllers/ImageController.php - Upload orchestration → Image processor: processes with
app/Services/ImageUploadService.php - Upload orchestration → Resize options: sets limits
app/Services/ImageUploadService.php - Image processor → Processed image DTO: returns image
app/Services/ImageProcessor.php - Upload orchestration → Storage contract: stores through
app/Services/ImageUploadService.php - Storage contract → Stored image DTO: returns metadata
app/Contracts/ImageStorageInterface.php - Upload orchestration → Image audit model: creates audit row
README.md - Upload orchestration → Upload result DTO: returns result
app/Services/ImageUploadService.php - Upload orchestration → Storage contract: gets image URL
app/Services/ImageUploadService.php - Driver binding → Storage contract: binds contract
app/Providers/AppServiceProvider.php - Driver binding → Local storage: selects driver
app/Providers/AppServiceProvider.php - Driver binding → Azure storage: selects driver
app/Providers/AppServiceProvider.php - Local storage → Stored image DTO: returns metadata
app/Services/Storage/LocalImageStorage.php - Azure storage → Stored image DTO: returns metadata
app/Services/Storage/AzureImageStorage.php - Azure storage → Azure Blob Storage: uploads blob
app/Services/Storage/AzureImageStorage.php - Image audit model → Storage driver enum: casts driver
app/Models/Image.php - Stored image DTO → Storage driver enum: records driver
app/Data/StoredImage.php - Inertia middleware → Laravel routing: registered in
bootstrap/app.php - User factory → User model: creates users
database/factories/UserFactory.php