$ cat /posts/2026/01/its-the-vibe.md

It's the vibe

My favourite genre of blog post right now is “here are some tools I built just for myself”. Examples:

I knew I wanted to do something similar, but you can’t force inspiration - I had to wait for it to strike.

Where it started

The other day I downloaded all of our bank transactions for 2025, twelve somewhat-depressing CSV files showing just where our money went last year. I pointed Claude at it:

Claude Code
❯ This directory contains all joint account transactions for 2025, organised by month (each filename is the first day of the calendar month). Analyze all transactions, identify spending patterns, categorize expenses, show me where my money actually goes versus where I think it goes, and flag any unusual patterns or opportunities to save. Ask any clarifying questions you need before completing your analysis.

A few false starts1 later, Claude came back with this:

Claude Code
**You're shopping for groceries 6+ times per week.**
The numbers:
- **323 shopping days** out of 365 (you shop almost every day)
- **69% of those days** you visit multiple stores
- 50 out of 52 weeks had **5+ grocery trips**
### The Real Cost
This "grab a few things" pattern has hidden costs:
- **Time** - 6 trips/week × 30 min = 3+ hours/week on grocery runs
- **Impulse purchases** - each visit is an opportunity to grab extras
- **Fuel** - even short trips add up
Consolidating to 2-3 bigger weekly shops could save both time and money.

I knew we shopped a lot, but… wow. I don’t know which was more flabbergasting, that there were only 42 days last year where we didn’t visit a supermarket, or that there were only two weeks where we didn’t go at least five times.

About half an hour later, while this was still running through my head, I got the question every parent loves hearing fifteen times a day.

“What’s for dinner?”

And lo, inspiration had arrived.

A bit of backstory

It’s not as if we’d never considered meal planning. It was just one of those things that work great for other families, but not for ours. One night’s dinner was hard enough to a) come up with and b) get agreement on, let alone the next four or five or six. Having ingredients on hand too often led to “I’m not in the mood for that”, leading to spoilage and waste.

It wasn’t until this week that I realised: the actual problem was never about food. It came down to two things:

  • Decision fatigue - constantly having to work out what to have for dinner is one of the lamest parts of adulting, but it’s no fun for kids either. They also don’t have as wide a view as adults of what the choices might be.
  • Autonomy - I don’t know about your kids, but ours reflexively rebel against being presented with a foregone conclusion. Give them choices, even if only a few narrow ones, and they’re fine.

Planning

I knew if this was going to work, it had to reduce decision fatigue as much as possible while still giving everyone an element of choice. After some thought, I told Claude:

Claude Code
❯ I want to create a meal planner that focuses only on two things: what meals we will eat this week, and the ingredients we need for each. No recipes. It'll need to be accessible by the rest of the family so that the kids can see what the remaining options are for the week - so it should live on my server (ideally I'd run it via docker compose or similar, but we can work out deployment later on). Ask clarifying questions and then plan implementation.

Claude had clarifying questions:

Claude Code
⏺ Should the app generate a combined shopping list from all the meal ingredients?
❯ Combined list, but in a format that can be exported to iOS Reminders (our grocery list app)
⏺ How should weeks work - do you want to plan multiple weeks ahead, or just focus on the current week?
❯ Current week only

A few other questions, and then we had a plan:

Claude Code
# Meal Planner Implementation Plan
## Overview
A simple family meal planner web app for tracking weekly dinners and their ingredients, with shopping list export to iOS Reminders via Shortcuts.
## Requirements Summary
- **Meals:** Dinners only, assigned to days (Mon-Sun) with flexibility to swap
- **Scope:** Current week only
- **Access:** Open viewing, PIN-protected editing
- **Shopping list:** Combined ingredients with iOS Shortcuts export
- **Deployment:** Docker Compose on home server
## Tech Stack Recommendation
**Go + SQLite + htmx**
Why this stack:
- Single binary, no runtime dependencies
- Tiny Docker image (~15MB)
- htmx provides interactivity without a JS framework
- SQLite keeps data persistence simple (single file)
- Easy to maintain and modify

I sat with this plan for a while, then made some crucial adjustments:

  • Dinners could be for a specific day, or just sometime this week - no hard and fast plan required.
  • Tonight’s dinner would be highlighted front and centre, saving the need for that question.
  • While this was definitely not going to be a recipe app, it did need to be a shopping app - so keeping meals as an option for the future would save us having to enter the ingredients all over again.
  • Weeks would run Sunday to Saturday, and once a day had passed its meal would simply return to the “future option” meal ideas backlog.

I also had Claude on the web put together a few design options:

Design options for a meal planner app

This was beginning to sound like a meal planner that would work for us.

Build time

The initial build took maybe 15 minutes - I just pointed Claude at the plan and the mockups, then hit approve all. Next thing you know, we have a fully-functional webapp.

Well, not quite fully functional. I’ve discovered that the last 10% is the trickiest part with vibe coding.

Then - of course - there was yak shaving time, where I obsessed over tiny little improvements…

And then I wasn’t happy with the design, so I pointed Impeccable Style at it…

But we got there!

Introducing Plateful

Meal planner app screenshot

The meal list - including one planned but not yet scheduled

Meal planner app screenshot

Meal ideas available to schedule, all with the ingredient list populated (even when there aren’t any)

Meal planner app screenshot
Populating the ingredient list
Meal planner app screenshot

The shopping list can be copied or sent to Reminders (via Shortcuts)

The main view shows tonight’s dinner, any meals we have planned for specific nights, and any we’re planning for this week but haven’t pinned down a day yet. Under meal ideas we have a list of things we’ve cooked recently, all with their ingredient list populated - in edit mode, we can add any of them to the week with one tap. The ingredient list is simple, with only three fields, and the shopping list aggregates items, ready to be sent to the clipboard or to our grocery list in Reminders (via Shortcuts).

I’m really pleased with how this turned out. It wouldn’t work for everyone, but it works perfectly for us - all the features we need, none we don’t.

And best of all, no need to give up fish and chip Friday 🎉

Featured image is from The Castle (1997) and borrowed with respect.

Footnotes

  1. Protip: don’t get Claude to load 2,575 rows of CSV data into memory as it will max out your context window - or at least it does on the Pro plan.