Virya Signal is one app with two trust boundaries
Fans and staff share one mobile shell. Their credentials, permissions and failure modes deliberately do not.
Wojciech Bator
Engineering Notes
I write down what I built, what broke, what I measured and what I changed. Mostly Rust, distributed systems, performance and automation.
Fans and staff share one mobile shell. Their credentials, permissions and failure modes deliberately do not.
Replaying a webhook looked safe until retention had already removed the token that made the event useful.
The draw stays local and deterministic. Rekor only proves that a public commitment existed at a specific time.
One new concert used to mean Bandsintown, Facebook, email, reminders and several opportunities to forget one of them.
A convenient integration node became one more hidden dependency, so I replaced it with plain HTTP.
Generating a square image was easy. Proving who may enter, exactly once, was the actual ticketing system.
The event branches were ready. Nothing verified, accepted or routed the events that were supposed to reach them.
I wanted a useful backend for independent artists. A smart link grew into campaigns, rewards, concerts, tickets and QR check-ins.
More referrals should mean a better chance, but a draw is only fair when I can explain exactly what went into it.
I began with counter++. Then I tried to explain where the number came from.
OAuth was green, the credentials were valid and external profiles still returned nothing. Welcome to integrations.
I wanted people to walk into a Virya experience, not just open another subpage.
AI helps me read, classify and write. It does not run the band or press Send on its own.
The machine can prepare a good message. A person still decides whether it deserves to be sent.
My backend instinct wanted PostgreSQL and an admin panel. The band wanted a table it could actually edit.
Caddy, n8n and PostgreSQL fit on one small VM. Owning the recovery path was the expensive part.
The band already had Sheets, Gmail, Drive and Discord. What it lacked was one process between them.
My CV fits in one prompt, so I resisted the heroic urge to build a knowledge platform around it.
I moved two mostly static sites and gained the most by deleting JavaScript they never needed.
I replaced an actor-heavy generated client with plain Tokio, bounded workers and batched confirms — then measured it in production.
It began as a fast place for music and concerts. Then I kept adding the things an independent band actually needs.
The upgrade helped, but the real gain came from storing less, batching more and deleting requests.
A few words about the new project I've joined
A modern metal band fusing metalcore with unexpected influences
Humanity reaching for the edge of what's possible
How I cut my way through the jungle as a solo artist and producer
The platform where you can back artists directly
The platform where you can support me by buying the music
The long-awaited Lootnick Singularity guitar is finally here
Writing the music and sound design for radio plays
The armory has been getting busy lately with new toys and gear
I'm Wojciech Bator — but you probably knew that already. Want a few facts?
No notes match that search.