High-level Implementation

Please read Philsophy and goals for background first.

We'd also like to link to an Architecture document about why things are this way, but it needs to be written first.

Upload

  1. Download the current state file from S3.
  2. Load a directory of JPEG files.
  3. Create thumbnails of all required sizes.
  4. Compress these thumbnails (not the original).
  5. Strip metadata.
  6. Generate a UUID, put it in the (local copy of the) state file.
  7. Upload thumbnails to S3, record in state file.
  8. Upload the new state file to S3.

Generate and deploy

  1. Download the state file from S3.
  2. Generate an index page with every album.
  3. Generate an album page with every image from that album.
  4. Generate an image page for every image in the album.
  5. Put these in a directory.
  6. Upload this directory to a webserver.
  7. Call a deploy hook.