Write-ups from building Beyou: solving N+1 queries, adding a cache layer, running a security audit and everything learned along the way.
Beyou's production is a 2012-era laptop in my bedroom, reached through a tunnel, with zero ports open on the router. This is why I chose self-hosting over free tiers, what actually breaks, and why opening my own app every day still feels this good.
I finished self-hosting Beyou and could finally open it from any browser, anywhere. That's exactly when I realized the browser was the wrong place for it. This is the story of going native: why React Native beat the Flutter my own course teaches, and the monorepo where one edit updates both apps.
Beyou had almost no users and I built a full observability stack anyway: Prometheus and Grafana for metrics, GlitchTip for errors from every client, Loki so I never SSH for logs, and uptime monitors that email a human. Layer by layer, here is why each one exists.
Beyou's assistant runs on a chain of free-tier LLMs that behaves like one reliable model. This is how it grew from a routine-building wizard into a 33-tool agent, how I picked and ordered the providers, and how the bill has stayed at exactly zero.
Before pushing Beyou to production, I ran an adversarial security audit using Claude Code as my AI-assisted pen tester. It found 26 vulnerabilities across the full stack, from business logic flaws in the gamification system to infrastructure misconfigurations. This is the full process: the prompt, the methodology, what it found, and how I fixed everything in 3 structured groups.
How we added a Caffeine cache layer to the Beyou backend, the problems it solved, the architecture decisions behind it, and the real performance numbers before and after.
N+1 is a common problem in apps that rely on JPA and Hibernate. I stopped to investigate how they appear, how to identify them, and how to fix them.