Admin — the panel volunteers run the charity from
A Russian-language back office for people who are not developers: add an animal, draft a care guide, approve a volunteer, record a payout — without ever meeting Markdown, an image pipeline or SQL.
Every hour a volunteer spends fighting a CMS is an hour not spent on animals. The back office had to be usable by whoever happens to be on duty, on a laptop, in Russian — while still drawing a hard line around money. The person editing a blog post should never be one wrong click away from the withdrawals screen.
A rich-text editor with a drag-and-drop media manager that uploads straight to Cloudflare R2 behind signed URLs, and a map picker for feeding points. Permissions live as an array on the admin’s own row and are checked in middleware against the path being asked for, so rights belong to a person rather than to a fixed role. A “Generate draft” button in the care-guide editor fills the article in from a language model, and the volunteer either takes it or sends it back to be rewritten. Every image the draft points at is checked to see that it actually loads, so nobody reviewing an article runs into a broken link.