- write upload to tmp - write db record (ticket id, photo id, secrets) - create redis "state" record (if present) - extract meta to JSON (pymdeco or pure PHP) - encrypt meta (optional) - strip meta (optional) - store meta - store original - resize / store versions: big (3K?) large (1024) medium (640) small (240) - extract colours (from medium) - extract metrics (from big) - resize / store square (300) from big - update redis "state" record along the way (if present) - update ticket record with dimensions, etc (JSON blob) along the way - create photo record from ticket record - delete ticket record - delete original (maybe?)