Velyora
Velyora is the software a church uses to keep its records: its members, their families, who came to each gathering, and the events people sign up for.
The server keeps every record locked and holds no key that opens it. Nobody running the servers can read a member's name, address or notes. Only the people a church lets in can.
Velyora runs in five languages. A pipeline I built keeps the translations current: when someone edits a page, only the parts that actually changed are sent for translation, and every translation is checked before it goes live.
I designed and built all of it on my own: the server, the website, the locking, and the tests.
For engineers: SRP-6a login, so the password never reaches the server. Per-recipient key wrapping over ECDH. Data keys held separately from the keys that encrypt them. Key rotation that rewrites every record in one go. Recovery from a printed QR code. The translation pipeline tracks a hash per language in sidecar files, so only changed blocks are re-sent. It splits each document into translatable units, masks tokens and links so the model cannot alter them, and batches requests against a character budget. Every returned block is validated: numbers must match the source, glossary terms and forced phrases must be present, link markers must be intact, and heading and paragraph structure must be unchanged. A block that fails is retried, then escalated, then falls back to manual entry.
It runs as a service: Stripe billing from signup to cancellation, data export and deletion under GDPR, many churches on one installation with roles deciding who sees what, five languages, around sixty end-to-end test runs, and a frozen set of tests kept for every database migration.
Built with Go, PostgreSQL, Hugo, Vanilla JavaScript, Docker, LLM API