Al Maruf Photography is the portfolio and working archive of Gazi Mahmud Al Maruf — a biomedical engineer in Satkhira, Bangladesh, who has spent six years and a thousand-plus field hours documenting the country's birds, mammals, reptiles and butterflies. The public site is only half the project. The other half is the CMS I built underneath it, which is what turns a photographer's hard drive into a queryable, citable record.
The design problem is that this is not a gallery, it is a catalogue. A gallery shows pretty pictures; a catalogue makes a claim about what a thing is. Every frame belongs to a subject, and every subject carries a common name, a scientific binomial and — where it was ever recorded — a Bengali name. That is a taxonomy, not a tag cloud, and it forced the data model to treat the subject as the primary entity with photographs filed underneath it, rather than the other way round.
The second constraint is scientific honesty, and it shaped the schema more than any UI decision. Most of these frames were shot years before anyone thought about publishing them, so locality and date simply are not known. The archive renders those fields as "not recorded" rather than guessing, which means every metadata field had to be nullable and every template had to have a defined empty state. An archive that quietly invents a location is worse than one that admits the gap.
I built the whole thing solo: the data model, the Supabase backend with row-level security, the Prisma-typed access layer, the media pipeline that takes 6000×4000 camera files down to responsive derivatives, the public site, and the admin CMS the photographer actually uses. The brief was that after handover he should never need me, a terminal, or a redeploy to publish a bird.