Cookslate Started as a Recipe Problem and Became a Full Stack Education

My wife Kimberly and I have been collecting recipes for thirty years. Paper scraps, torn magazine pages, bookmarked websites that no longer exist, notes app entries that make zero sense without context. When I decided to build something to organize all of it, I said sure, figuring I’d have something functional in a weekend.

That was not what happened.

I want to be clear about something upfront: I am not a developer. I am a systems engineer who has spent 28 years elbow-deep in Exchange servers, Active Directory, and PC hardware. I can write PowerShell that would make some developers wince and I can automate the hell out of enterprise tasks, but building a full web application from scratch is a different animal entirely. I had built things before, but never anything with a real database, a real backend, real user authentication, and a real deployment pipeline all working together at the same time. Cookslate became all of that, whether I planned it or not.

The first two days were actually fine. PHP is old, PHP is ugly, and PHP will outlive us all. I got a basic CRUD structure going faster than I expected. Forms posting to the database, records displaying on the page, the usual early-project honeymoon where everything feels possible and nothing has broken yet.

Then I tried to make it not look terrible.

CSS has a way of humbling you in ways that server-side errors simply do not. A PHP error tells you exactly what line you screwed up. CSS just makes your layout look like something got kicked down a flight of stairs and refuses to explain why. I spent more time on the recipe card display layout than I spent on the entire database schema. That ratio probably tells you something about where my gaps actually were.

The MySQL side was where things got genuinely interesting, and I mean that in the honest sense, not the polite sense. The recipe structure seemed simple at first: title, ingredients, instructions, tags. But real recipes do not cooperate with a simple flat structure. Ingredients have quantities and units. Instructions have steps with order dependencies. Tags need to be queryable. What started as three tables became seven, and every time I added a feature I had to decide whether to refactor the schema or just hack around it. I hacked around it more than once. Future Frank is going to have opinions about that.

Where Claude Code Changed the Problem, Not Just the Speed

I used Claude Code to build Cookslate, and I want to talk about what that actually means in practice, because it is not what the hype suggests.

Claude Code did not write Cookslate for me. What it did was collapse the time between “I do not know how to do this specific thing” and “I understand why this approach works.” That distinction matters enormously. When I needed to build the search functionality across ingredients and tags simultaneously, Claude walked me through the JOIN logic in a way that made sense against my actual schema, not some generic example. When the session handling was doing something weird I could not explain, it helped me trace the logic until we found it together. It was less like having a code generator and more like having a senior developer sitting next to me who had infinite patience for my questions and no reason to make me feel stupid for asking them.

What it could not do was make architectural decisions for me. Every time I asked a vague question, I got a vague answer. The better I got at asking specific questions with real context, the better the collaboration got. That feedback loop, where your output quality is directly tied to how clearly you can define your own problem, turns out to be its own education.

Cookslate is live at cookslate.app. It’s open source and freemium. It runs in Docker on Ubuntu Server on my home network, proxied through Caddy, and it actually works. Kimberly uses it. Lauren uses it. That last part still surprises me a little.

Here is what I walked away from this project knowing that I did not know going in: full stack development is not one skill with depth, it is five or six entirely different disciplines that happen to be duct-taped together by HTTP. The CSS layer does not care about your database expertise. The authentication layer does not care that your query logic is clean. Every layer has its own logic, its own failure modes, and its own completely separate way of making you feel like a first-year student.

I am still figuring things out, just slightly more inefficiently each year. But Cookslate taught me more per hour than almost anything else I have built, and the fact that it solved a real problem for a real person who had to live with me while I built it made every frustrating hour worth it.

Leave a Reply