Sleetgarden: from one upload to three thumbnails

Solid line = request · dashed green = response or return leg · a small arc = two lines passing over each other. Scroll to zoom, drag to pan.

100%
Upload & scan (synchronous edge) Async resize pipeline Sleetgarden app iOS · Android · web Upload API POST /photos · GET /photos/:id Virus scan sandboxed scanner · no network Resize queue resize-jobs · max 3 receives Dead-letter queue resize-jobs-dlq · kept 14 days Photo DB status · owner · thumbnail keys Object storage quarantine/ · originals/ · thumbs/ S 150 px M 600 px L 1200 px Image workers libvips · autoscale on queue depth On-call alert fires when DLQ depth > 0 CDN img.sleetgarden.app · 1-year cache 1 POST /photos 2 to quarantine/ 3 insert row 4 row saved 5 202 Accepted S1 scan job S2 scan, then promote S3 verdict R1 if clean R2 pull job R3 read original R4 write 3 thumbnails R5 status: ready / failed F1 nack, retry later F2 F3 after 3 attempts F4 page on-call F5 manual replay D1 GET thumbnail D2 cache miss D3 origin bytes D4 cached image