Yeah, most of that is backend issues. Part of them dictated by product requirements eg. We require serving 5 year old, <4MB photos with 99th percentile latency of 1 second.
Product and UI has its own complexities, but it seems clear each product is unique and would require different logic.