Inspiration
A friend suggested I participate in the Shipyard contest. Eitan's brief immediately resonated with me: I love cooking, I save tons of recipes from YouTube and Instagram, but I almost never actually cook them. The real problem is going from saving to doing.
At first, I envisioned a full-featured app: recipe database, meal calendar, grocery lists, cookbook integration, everything Eitan described. After some market research, I found apps that already did parts of this, but the vibe wasn't there. I spent time planning with LLMs, and eventually realized what I actually needed was an app that pushes you to cook. Content is everywhere. What's missing is the bridge between "I saw a recipe" and "I made it." So I cut a lot of fat and focused on simple features that push you to take action.
How I Built Cooked
I wanted to go native. I had tried React Native before and wasn't convinced. I prefer staying close to the platform. Even without knowing Swift, I jumped in. I've been coding with AI for two years, and I wanted to take it a step further: plan the project thoroughly and let AI do almost all of the coding.
I started with video extraction, the key feature. As a JS developer, I used Node.js and leaned on open source tools for extraction. The challenge is that even with just three social networks, each one has its own quirks, and it took a lot of iteration to get reliable results. The upside is that this open source foundation gives me room to evolve the solution over time.
Then I built the core features and screens to feel out the flow, because on paper it's one thing, but when you actually touch the app, you notice all sorts of small things to adjust. For design, I found a workflow that was a real game changer. I used Gemini as an art director: I defined Eitan's audience traits, and it came back with briefs for six distinct UI styles. Then I used Replit to generate a landing page and three app screens for each style. Because we're in the web, Replit could do this incredibly fast and at high quality. I could look at six fully realized directions side by side, each one already incorporating the features I had defined earlier, and confidently pick the one that felt right. I immediately clicked with the Bold Swiss style: black and white, no rounded corners, sharp. For an app whose only purpose is to get you to cook, it felt direct and no-nonsense. It was a perfect fit.
RevenueCat was one of the first things I set up. Before even building features, I installed the third-party dependencies I knew I would need, and RevenueCat was mandatory. Later, I dug deeper into monetization. I researched how successful apps convert and retain users, and one thing kept coming up: onboarding is at the center of it all. RevenueCat's blog was a great resource on this. I analyzed competitor pricing, calculated costs per free user and potential margins for paid users. Margins turned out high enough to offer an accessible price point. I ended up building three different onboarding flows, kept one for the contest submission, and plan to A/B test the others post-launch. I also want to integrate RevenueCat's paywall templates, which are another lever that needs proper A/B testing to optimize conversion.
What I Learned
- Fewer features, more impact. With AI, code ships fast and the temptation to add features is real. My guideline: "Does this help you cook?" If not, it's out.
- A real workflow with AI. Plan thoroughly, document everything, trust AI to code, test, then have AI review too. I made a lot of progress building this end-to-end flow.
- Everything around the code matters. A Node.js backend with a Python binary to host on Railway, working in Xcode (not my usual tool), freemium balance, pricing. I spent more time on everything surrounding the app than on the code itself.
Challenges
- Multi-platform extraction: every social network has its quirks, and getting reliable extraction across TikTok, Instagram, and YouTube required a lot of iteration and fallback strategies.
- The cooking flow: the menu state machine (empty, planning, cooking, archived) sounds simple, but the transitions and confirmation dialogs needed real fine-tuning once I could touch the app on a real device.
- Resisting over-engineering: when AI codes fast, you want to add everything. Keeping focus on what matters was a real exercise in discipline.
Built With
- groq-whisper
- nuxt-4
- openrouter
- railway
- revenuecat
- supabase
- swift
- swiftui
- tikwm
- vue-3
- yt-dlp
Log in or sign up for Devpost to join the conversation.