Normally during Christmas I tend to build something by hand. Last year I started in Terminal making simple kids games with Python. Then I got more ambitious and moved to Xcode for an iOS app. My wife and I were during this time planning a family trip to Japan and I wanted my 9-year-old to share in the anticipation. We had guidebooks; she had nothing and no clue because we’re staying just days on more than 10 locations. So I started building her a hard coded app which showed our itinerary in pictures. Friends were so positive that I rebuilt it in an app for user generated content. Parents pre load the itinerary (even spouses will benefit from this) and kids can upload photo's and diary texts and share those with friends and family. All information is only stored on the phone or iCloud.
I started with ChatGPT which was a pretty strict tutor. It really wanted me to understand the concepts of programming. Building like this was slow but fun.The real shift came when I switched to Claude Code (as it was called earlier this year) and not much later in February the Claude AI agent integrated into Xcode 26. That sped things up and it built a much better view structure, one that I myself couldn’t have designed. But still, I've spent days, and a lot of tokens, to get pictures to fit the iPhone screen for instance. AI did the coding part, but it was I who was fine-tuning everything until satisfied and all text and design are mine; I called this "artisanal vibe coding".
Working this way, SwiftUI was actually not the hard part. The hard part was everything around the code: Xcode project settings, GitHub workflows, domain configuration (uploading DNS records), App Store Connect metadata, the EU Digital Services Act trader status that almost killed visibility pre-launch. Without AI I'd probably have given up at the first "abracadabra" config screen. I bet that before next December Agents will take this part too. I’m hesitant for cross application agents though.
A few things I learned as a non-engineer generalist: • Swiftdata is great until you touch migrations; I deferred Spanish localization specifically to keep raw data values stable. Engineers could probably see that happen up front. • Adding Android now would mean a different language and toolchain. For me that feels like starting all over again while keeping one foot in iOS, effectively doing everything twice. This is keeping me from Android for now ; ( • ASO is its own discipline, with its own set of rules. And even AI bots don't always seem to know how it works themselves. • Privacy-by-design is the way and honestly less work to build too.
TravElly is free and will stay that way. For the next release I want to add AI-generated travel tips per destination. AI did this for the hard coded app and it really gave great ideas. Keeping it free does mean I need to keep AI costs from going sky-high. I'm okay though with this hobby costing me some. And the app is such a niche being in Dutch and for kids that I don’t count on big numbers.
Any advice is welcome! On keeping AI token usage under control in a free app, I’m familiar with setting limits. Minimizing the gap to Android. And of course, about the term artisanal vibe coding.
https://mijn-travelly.nl/en/ The original Dutch site: https://mijn-travelly.nl
nickbroom98•20m ago
jeroen_stulen•6m ago
Have you done a migration like this yourself?