Postcards, that's it.
Postcards is an app for arranging 4 images on a 2x2 grid to be printed on postcard paper. Add your photos, then arrange, rotate, scale, and straighten them as you see fit, and then click “print” to either send them to your printer or save them as a PDF.

Your photos are never uploaded anywhere and stay right there in your browser’s storage. No login or trust required.
Why build this?
My wife and I got a very late start to sending out our holiday cards this year (we still haven’t sent them). We’d both been pretty busy, so it just sat there on our todo list, until finally it’s New Years day and we still haven’t sent any.
I’ll own up to the fact that I was the primary blocker. I volunteered to arrange them on a grid so she could print them on postcard paper and send them out. The problem here is that I loathe the process of navigating bulky multi-purpose tools for simple tasks.
I don’t want to sign up for an account, I don’t want to learn your UX, and I don’t want to pay for designs and templates. I just want to arrange 4 photos and print them on a piece of paper.

But try as I might, I could not find a simple, no fuss tool for the job. So I built one.
Simple Problems, Modern Solutions
In the past, I probably wouldn’t have built this.
I’m an experienced software engineer, but the cold start problem is very real, and I didn’t want to go through the hassle of setting up and designing a whole react app just to print some postcards. I would probably just give up and use one of the tools I described earlier.
But with ✨the power of AI✨ through Claude Code, I was able to get something up and running in a matter of minutes.

And to my surprise, the first version worked. The UI looked terrible and the tools were a bit clunky, but the app did exactly what I asked for.
Even more to my surprise was how long iterating took from there on.
Prompt, Test, Repeat
As I said before, I wasn’t too happy with the UI. I have a particular aesthetic I like to apply to my projects to maintain some level of consistency, so my next few prompts were focused on updating the app to use React and a style guide I provided. What’s interesting is that new bugs were introduced with what should’ve been a simple refactor.
The next hour or so was spent prompting

and re-prompting

repeatedly trying to get Claude to fix the same bugs.

And yes, I could’ve gone into the code and fixed it myself, but I wanted to see if Claude could figure it out. And with some guidance it finally did.
Final Thoughts
I don’t think this would’ve happened if I had explicitly included react and my style guide in the original prompt. For future projects, I plan to provide a set of components and an app template I’ve created. Hopefully this will expedite things along and save on precious tokens.

When it was finished, all I had left to do was some style tweaks, rearranging the UI a bit, and deploying to the web. Now my wife can print 4x5’s to her heart’s content, and without waiting on me.