<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renee Chung</title>
    <description>The latest articles on DEV Community by Renee Chung (@reneecst).</description>
    <link>https://dev.to/reneecst</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3592957%2F67aa636f-2d2e-4f00-9828-1581039a7365.jpg</url>
      <title>DEV Community: Renee Chung</title>
      <link>https://dev.to/reneecst</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/reneecst"/>
    <language>en</language>
    <item>
      <title>How Shipping Changed the Way I Find Product Ideas</title>
      <dc:creator>Renee Chung</dc:creator>
      <pubDate>Fri, 10 Jul 2026 11:50:35 +0000</pubDate>
      <link>https://dev.to/reneecst/how-shipping-changed-the-way-i-find-product-ideas-8m4</link>
      <guid>https://dev.to/reneecst/how-shipping-changed-the-way-i-find-product-ideas-8m4</guid>
      <description>&lt;p&gt;I used to think finding a product idea was the hardest part of building software. Not because I didn’t have ideas. Because every idea seemed to come with the same questions.&lt;/p&gt;

&lt;p&gt;“Why would anyone use your app?”&lt;/p&gt;

&lt;p&gt;“There are already apps that do this.”&lt;/p&gt;

&lt;p&gt;“What’s different about yours?”&lt;/p&gt;

&lt;p&gt;The funny thing is, nobody was asking me those questions.&lt;/p&gt;

&lt;p&gt;I was. Every single time.&lt;/p&gt;




&lt;p&gt;So I’d write an idea down. Open a blank project. Think about it for a while. Then convince myself not to build it. I’d tell myself the market was too crowded. Or someone else had already built it. Or I couldn’t explain why my version deserved to exist. After a while I realised I had become very good at talking myself out of building things.&lt;/p&gt;




&lt;p&gt;Around that time I started watching Marc Lou’s videos. I don’t remember exactly which video it was. I just remember one thing standing out.&lt;/p&gt;

&lt;p&gt;He kept building.&lt;/p&gt;

&lt;p&gt;Not every product was a huge success. Some worked better than others. But he didn’t seem to spend months trying to answer every question before he started.&lt;/p&gt;

&lt;p&gt;He just... built.&lt;/p&gt;

&lt;p&gt;I remember thinking maybe I was making this harder than it needed to be.&lt;/p&gt;




&lt;p&gt;So I tried something different. Instead of asking, “Is this a good idea?” I asked, “Would I enjoy building this?”&lt;/p&gt;

&lt;p&gt;That sounds like a small change. For me, it wasn’t.&lt;/p&gt;

&lt;p&gt;It took away this imaginary pressure that every side project had to become a business.&lt;/p&gt;




&lt;p&gt;Over the next few months I built a few small products. Some of them didn’t go anywhere. Some got a few users. One of them got a single paying customer.&lt;/p&gt;

&lt;p&gt;Most people would probably look at that and say they weren’t successful. I don’t really see them that way anymore. Each one taught me something I didn’t know before. Not just technically. About products. About writing. About talking to people.&lt;/p&gt;

&lt;p&gt;About realising that marketing feels very different when you’ve spent your career writing code.&lt;/p&gt;




&lt;p&gt;Something else happened that I wasn’t expecting. The more I shipped, the less I worried about finding the perfect idea. Not because I suddenly became good at finding ideas. Because I realised ideas don’t arrive fully formed.&lt;/p&gt;

&lt;p&gt;They change while you’re building them.&lt;/p&gt;

&lt;p&gt;Sometimes the interesting part of the product isn’t even the thing you started with. Sometimes you only discover it halfway through.&lt;/p&gt;




&lt;p&gt;I still remember how much time I spent trying to answer one question.&lt;/p&gt;

&lt;p&gt;“What makes your app different?”&lt;/p&gt;

&lt;p&gt;These days I think that’s the wrong question to ask at the beginning. Not because it isn’t important. Because sometimes you genuinely don’t know yet.&lt;/p&gt;

&lt;p&gt;Sometimes the answer only appears after you’ve spent enough time building.&lt;/p&gt;




&lt;p&gt;I’m still figuring this out. I don’t have a framework for finding great ideas. I don’t know if the next thing I build will work.&lt;/p&gt;

&lt;p&gt;I still have days where I wonder if anyone will ever use something I’ve spent months making.&lt;/p&gt;

&lt;p&gt;That feeling hasn’t really gone away.&lt;/p&gt;

&lt;p&gt;But one thing has changed. I don’t wait for certainty anymore.&lt;/p&gt;

&lt;p&gt;I build first.&lt;/p&gt;

&lt;p&gt;Then I listen.&lt;/p&gt;

&lt;p&gt;Then I keep building.&lt;/p&gt;

&lt;p&gt;Somewhere along the way, the product usually tells me what it wants to become.&lt;/p&gt;




&lt;p&gt;Looking back, I don’t think shipping helped me find better ideas. I think it changed the way I look at them. And maybe that’s been the biggest lesson of all.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>How I Ship Apps While Working a Full-Time Job</title>
      <dc:creator>Renee Chung</dc:creator>
      <pubDate>Wed, 10 Jun 2026 08:21:05 +0000</pubDate>
      <link>https://dev.to/reneecst/how-i-ship-apps-while-working-a-full-time-job-50ol</link>
      <guid>https://dev.to/reneecst/how-i-ship-apps-while-working-a-full-time-job-50ol</guid>
      <description>&lt;p&gt;I have a full-time job. I also build and ship indie apps on the side.&lt;/p&gt;

&lt;p&gt;Not because I have endless energy or some heroic morning routine. Most evenings my brain is fried. And yet — I've shipped three apps this year with more on the way.&lt;/p&gt;

&lt;p&gt;Here's how I actually do it, without the productivity guru fluff.&lt;/p&gt;




&lt;h2&gt;
  
  
  The reality first
&lt;/h2&gt;

&lt;p&gt;Let me be honest about what "shipping while working full-time" actually looks like.&lt;/p&gt;

&lt;p&gt;It's not glamorous. Some evenings I open my laptop and manage to fix one bug before calling it a night. Some weeks I barely touch my side projects at all.&lt;/p&gt;

&lt;p&gt;I'm not optimising for speed. I'm optimising for &lt;em&gt;not stopping&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  I build small things on purpose
&lt;/h2&gt;

&lt;p&gt;My apps are not complex platforms. They are focused, single-purpose tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A recipe generator that works from your pantry&lt;/li&gt;
&lt;li&gt;An expense tracker&lt;/li&gt;
&lt;li&gt;A mood tracker&lt;/li&gt;
&lt;li&gt;A to-do list that only lets you focus on one thing at a time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one has a core feature and not much else. That's not a limitation — it's the whole strategy. A focused app is something one person can design, build, test, and ship. A platform is a team problem.&lt;/p&gt;

&lt;p&gt;When scope is small, the distance between "idea" and "live on the App Store" stays short enough to survive a fried brain.&lt;/p&gt;




&lt;h2&gt;
  
  
  I committed to one stack early
&lt;/h2&gt;

&lt;p&gt;Flutter, Supabase, RevenueCat. I chose these deliberately — not because I already knew them, but because I wanted to learn them properly and keep using them across every app I build.&lt;/p&gt;

&lt;p&gt;The bet is on compounding. Every app I ship with this stack means the next one starts with more familiarity. Instead of re-learning tooling from scratch each time, I'm slowly building muscle memory — and spending more time on the actual product.&lt;/p&gt;

&lt;p&gt;Pick a stack with intention. Stick with it long enough to get boring with it. The returns show up later.&lt;/p&gt;




&lt;h2&gt;
  
  
  I separate high-energy and low-energy tasks
&lt;/h2&gt;

&lt;p&gt;Building a new feature requires a switched-on brain. Writing App Store copy, researching keywords, updating a README, fixing a minor UI issue — these don't.&lt;/p&gt;

&lt;p&gt;I've learned to match the task to my energy level. Evenings after a heavy day are not the time to architect a new system. They are fine for polishing a screen, writing a social post, or planning tomorrow's actual work.&lt;/p&gt;

&lt;p&gt;Brainstorming, writing, admin — these are fried-brain friendly. Save the hard coding sessions for when you're actually sharp.&lt;/p&gt;




&lt;h2&gt;
  
  
  I don't wait for motivation
&lt;/h2&gt;

&lt;p&gt;Motivation is unreliable. Routine is not.&lt;/p&gt;

&lt;p&gt;I don't wait to feel inspired before opening the project. I just open it. Sometimes I close it 20 minutes later having done almost nothing useful. That's fine. The habit of showing up matters more than any single session.&lt;/p&gt;

&lt;p&gt;The apps that never get shipped are the ones that only get worked on when the developer feels like it.&lt;/p&gt;




&lt;h2&gt;
  
  
  I ship before it's perfect
&lt;/h2&gt;

&lt;p&gt;SimplePlate, my AI recipe app, went through 10 App Store review rounds before it was approved. It launched with bugs I knew about. It launched with features I wished were better.&lt;/p&gt;

&lt;p&gt;It launched.&lt;/p&gt;

&lt;p&gt;A live app with imperfections beats a perfect app that exists only on your laptop. Real users find real problems. Real downloads tell you whether the idea has legs. Waiting for perfect is just delayed quitting.&lt;/p&gt;




&lt;h2&gt;
  
  
  The honest reason it works
&lt;/h2&gt;

&lt;p&gt;Every app is a small step toward something bigger. The indie portfolio is a long game — slow, sometimes frustrating, occasionally exciting when a stranger downloads something you made on a tired Tuesday evening.&lt;/p&gt;

&lt;p&gt;That context keeps me going on the nights when I'd rather just watch TV.&lt;/p&gt;

&lt;p&gt;You don't need a perfect schedule or unlimited energy. You need a reason, a small scope, and the discipline to keep showing up even when the sessions are short and messy.&lt;/p&gt;

&lt;p&gt;That's it. That's the whole system.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building 10 Flutter apps in 2026 and documenting the journey. Currently 3/10 live. Follow along on &lt;a href="https://x.com/renee_chung" rel="noopener noreferrer"&gt;X (@renee_chung)&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>I learned how to build an AI wrapper by shipping a real app</title>
      <dc:creator>Renee Chung</dc:creator>
      <pubDate>Sun, 07 Jun 2026 04:06:30 +0000</pubDate>
      <link>https://dev.to/reneecst/i-learned-how-to-build-an-ai-wrapper-by-shipping-a-real-app-18ep</link>
      <guid>https://dev.to/reneecst/i-learned-how-to-build-an-ai-wrapper-by-shipping-a-real-app-18ep</guid>
      <description>&lt;p&gt;I'm not an AI researcher. I'm a backend developer with 16 years of Laravel and PHP experience who wanted to build something with AI.&lt;br&gt;
So I did what made sense — I built a real app.&lt;/p&gt;
&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Simple Plate is an AI recipe generator. Tell it what ingredients you have, your dietary preferences and cuisine mood, and it generates three recipe ideas for you. Simple problem. Simple solution.&lt;/p&gt;

&lt;p&gt;What I didn't expect was how much I'd learn about working with AI APIs by actually shipping something real.&lt;/p&gt;
&lt;h2&gt;
  
  
  The "AI" part is simpler than you think
&lt;/h2&gt;

&lt;p&gt;The core AI integration is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;dartfinal&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;chat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;completions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;model:&lt;/span&gt; &lt;span class="s"&gt;'gpt-4o-mini'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;messages:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'role'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'system'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'content'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;systemPrompt&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'role'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'user'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'content'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;userPrompt&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The API call itself is not the hard part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt engineering is everything
&lt;/h2&gt;

&lt;p&gt;The hard part is getting consistent, useful output. My prompts evolved significantly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First version: vague, inconsistent results&lt;/li&gt;
&lt;li&gt;Added dietary restrictions: better but still repetitive&lt;/li&gt;
&lt;li&gt;Added cuisine mood: more variety&lt;/li&gt;
&lt;li&gt;Added avoid list for recent recipes: solved repetition&lt;/li&gt;
&lt;li&gt;Added pantry scoped history: solved repetition properly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The prompt is where 80% of the real work lives in an AI wrapper.&lt;/p&gt;

&lt;h2&gt;
  
  
  The non-AI parts took longer
&lt;/h2&gt;

&lt;p&gt;Honest truth — the OpenAI integration took a day. Everything else took weeks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apple App Store: 8 rejections before approval&lt;/li&gt;
&lt;li&gt;Email verification with Supabase and custom SMTP&lt;/li&gt;
&lt;li&gt;Deep linking on Android&lt;/li&gt;
&lt;li&gt;RevenueCat subscription setup across iOS and Android&lt;/li&gt;
&lt;li&gt;UTC timezone bugs in recipe scheduling&lt;/li&gt;
&lt;li&gt;Image generation and caching in Supabase storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd do differently
&lt;/h2&gt;

&lt;p&gt;Start with the prompt engineering earlier. I spent too long on UI before nailing the core AI output quality. The prompt is your product — treat it that way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;Simple Plate is live on both the App Store and Google Play. Built solo in about a month using Flutter, Supabase, OpenAI, and RevenueCat.&lt;/p&gt;

&lt;p&gt;Zero subscribers so far. But it's real, it's live, and I learned more about AI integration by shipping it than I would have from any tutorial.&lt;/p&gt;

&lt;p&gt;Sometimes the best way to learn is to just build something real.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/us/app/simple-plate/id6765864279" rel="noopener noreferrer"&gt;Apple Store&lt;/a&gt; | &lt;a href="https://play.google.com/store/apps/details?id=com.ravingcode.simpleplate" rel="noopener noreferrer"&gt;Google Play Store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>ai</category>
      <category>mobile</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
