The Six-File Problem: How I Learned to Stop Orchestrating and Love the Queue
I didn’t build a CMS — I built an escape route from one. This post tells the story of Wryte, a Markdown-first sync layer between GitHub and Convex, and how six tiny files exposed the real problem with Promise.all, rate limits, and naive bulk processing.
What Building Lumo Taught Me About Full-Stack Development
The final post in the Lumo series — everything I learned from building a full-stack personal finance app from scratch, the mistakes I'd avoid, and what comes next.
Device Sessions, Rate Limiting, and Not Getting Hacked
Building security for a finance app — device approval workflows, multi-layer rate limiting, subscription tiers, and GDPR compliance. The unglamorous stuff that keeps data safe.
The Admin Dashboard Nobody Sees (But Everything Needs)
Every app needs an admin panel. Here's how I built Lumo's with Vite and TanStack Router — and why internal tools deserve real engineering effort.
Building Lumo's Mobile App: React Native Patterns That Don't Suck
Building a finance app in React Native that actually feels native — screen architecture, custom hooks, real-time sync, and the small details that matter.
Building AI Spending Predictions That Actually Work
Building a spending prediction engine that tells you how much you'll spend next month — two model versions, confidence intervals, and a lot of humility.
Multiple Income Streams and the Budget Math Nightmare
Salary hits monthly. Freelance pays biweekly. Investments trickle in quarterly. Converting all of that into one budget number? Harder than it sounds.
Convex as a Real-Time Backend: The Love and the Pain
Building a real-time finance app on Convex — what's magical, what's painful, and what I wish someone had told me before I started.
The Budget Cycle System That Broke My Brain
Building a custom budget cycle system that aligns with your actual payday — sounds simple, right? Three rewrites later, here's what I learned.








