<?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: Luna</title>
    <description>The latest articles on DEV Community by Luna (@moonshot_1341).</description>
    <link>https://dev.to/moonshot_1341</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%2F4024205%2F9c9e1202-3f17-4f57-b0a5-f410bc02d568.jpg</url>
      <title>DEV Community: Luna</title>
      <link>https://dev.to/moonshot_1341</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moonshot_1341"/>
    <language>en</language>
    <item>
      <title>The App's Done. So Why Does It Keep Failing Review?</title>
      <dc:creator>Luna</dc:creator>
      <pubDate>Fri, 10 Jul 2026 15:03:32 +0000</pubDate>
      <link>https://dev.to/moonshot_1341/the-apps-done-so-why-does-it-keep-failing-review-3odp</link>
      <guid>https://dev.to/moonshot_1341/the-apps-done-so-why-does-it-keep-failing-review-3odp</guid>
      <description>&lt;p&gt;Last time I talked about the four walls between building fast with AI and actually shipping. Today, the one that breaks the most people — review and policy. The code is finished, and this is where you stay stuck for weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review doesn't check "does it work"
&lt;/h2&gt;

&lt;p&gt;I had this backwards at first too. Figured if the app ran fine, it'd pass review. Nope. Review isn't asking "does this work," it's asking "&lt;strong&gt;which policies does this app have to follow?&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;So no matter how perfect the code is, if the policies that should come with it aren't in place, you're blocked. AI writes brilliant code, but it doesn't handle the things that &lt;em&gt;tag along with&lt;/em&gt; that code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fun part: every feature summons a different check
&lt;/h2&gt;

&lt;p&gt;Let me stack features onto that "convenience-store BOGO deals app" one at a time. It clicks fast once you see it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I want to save my favorite products."&lt;/strong&gt; → Saving needs login, and the moment you log someone in, that's "personal data." A privacy policy, a consent screen, and rules for when and how you delete it (disposal) all follow as a set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I want to give points for checking deals."&lt;/strong&gt; → Points are a kind of currency, so you have to spell out clearly how they accrue and when they expire. Daily check-ins work the same way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I want to help people find a nearby store."&lt;/strong&gt; → The instant you use location, a separate location consent gets attached.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I want to push an alert when a deal starts."&lt;/strong&gt; → Promotional notifications need an opt-in, and to send them at night you need a separate after-hours consent on top of that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And then there's the copy.&lt;/strong&gt; Hand it to AI and you get "Always a deal!", "Lowest price guaranteed!" — bold and snappy. Looks great. And these absolute claims are regulars on the rejection list.&lt;/p&gt;

&lt;p&gt;Once you see this, it lands. On screen it's adding a single button, but behind it a whole bundle of policy comes along for the ride. That's exactly why the code takes half a day and approval doesn't.&lt;/p&gt;

&lt;p&gt;Oh, one more. If you go "eh, I'll just slap example.com in there" for documents like the privacy policy or terms — that gets flagged too. It has to be a real page that actually opens, with the operator's info on it. I didn't know that, and it stalled me again right at the finish line.&lt;/p&gt;

&lt;h2&gt;
  
  
  So here's what clicked
&lt;/h2&gt;

&lt;p&gt;If you build all of these walls and then hit each one after the fact, your launch keeps slipping. You finish every feature and &lt;em&gt;then&lt;/em&gt; go "oh, there's no consent screen," "oh, this copy isn't allowed."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I'd asked "what check does this feature summon?" before building, I'd have saved weeks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Policy isn't an annoying thing you "handle" at the end — it's part of the design you sketch out while planning. The moment you decide which features go in is, secretly, the moment you decide which policies this app will have to carry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Review checks policy, not code. So sketch out "what check does this summon?" before you add a feature, and shipping gets a whole lot faster.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next time I'll bring the data story — "heaven to build, hell to run." The exact trap where you start with a free API and end up locked into weekly labor.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://bluelove3.gumroad.com/l/tmydzb" rel="noopener noreferrer"&gt;Get the $31 Stack Prompt Pack — $19&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
The exact prompts, cost calculator, and n8n templates from this stack.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>webdev</category>
      <category>selfhosted</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>AI Builds the App in 5 Minutes. So Why Can't I Ship It?</title>
      <dc:creator>Luna</dc:creator>
      <pubDate>Fri, 10 Jul 2026 15:03:29 +0000</pubDate>
      <link>https://dev.to/moonshot_1341/ai-builds-the-app-in-5-minutes-so-why-cant-i-ship-it-5bek</link>
      <guid>https://dev.to/moonshot_1341/ai-builds-the-app-in-5-minutes-so-why-cant-i-ship-it-5bek</guid>
      <description>&lt;p&gt;"I told the AI what I wanted and it spat out an app in five minutes." You've seen that video, right? So have I. And honestly, it made me a little anxious. Everyone's cranking out apps and I'm the one standing still.&lt;/p&gt;

&lt;p&gt;So I went and built one myself. A handful of mini-apps, all the way to launch. And here's the one thing I figured out: &lt;strong&gt;building really does take five minutes. But that's not the whole job.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me walk you through building one app, and you'll feel exactly what I mean.&lt;/p&gt;

&lt;h2&gt;
  
  
  I just built it. It came together in a single evening
&lt;/h2&gt;

&lt;p&gt;Let's say the idea is a "&lt;strong&gt;one-screen app that rounds up this week's convenience-store BOGO and 2-for-1 deals&lt;/strong&gt;." Wouldn't it be nice to know what's on sale before you walk in? Everyone's had that thought. It's simple and clear, which makes it perfect for a mini-app.&lt;/p&gt;

&lt;p&gt;I handed it to the AI. Lay out the screen, add category filters (snacks, drinks, lunch boxes), drop in a search bar. And honestly, in one evening I had a working app. Swipe through and the deals scroll right by. It even looked the part.&lt;/p&gt;

&lt;p&gt;Up to here, the videos were telling the truth. But the real story starts right after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Except there was no "real data" to fill the screen
&lt;/h2&gt;

&lt;p&gt;The screen looked fine, but there was no actual deal info to put in it. Convenience-store chains don't hand you a tidy deals list over an API. The data's scattered across each brand's app and individual stores, and every format is different.&lt;/p&gt;

&lt;p&gt;So what was left? Me, every week, collecting the deals by hand, cleaning them up, and uploading them. While building, I figured "I'll fill in the data later." But come launch, that "later" turns into a chore that comes back every single week. Deals reset weekly, so miss one week and the app's showing stale info.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before writing any code, I should've asked: "Who fills this in every week?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Miss one week, and the app lies
&lt;/h2&gt;

&lt;p&gt;Say I got busy for a week and didn't update it. Someone opens the app, sees "oh, this is BOGO," walks to the store — and that deal ended last week. That person? Never opens this app again. I wouldn't either.&lt;/p&gt;

&lt;p&gt;For an app where "accuracy" is the whole point — prices, deals, dates — trust collapses the moment you're wrong once. The screen looks fine, but it's unusable. And here's the scary part: if you fill it with AI-generated "sample data," the screen looks so convincing that you don't notice this problem until way too late.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One piece of data that's never wrong beats a hundred pretty screens.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  I added login to keep users around, and then…
&lt;/h2&gt;

&lt;p&gt;A one-and-done app feels like a waste. So you get greedy. "Save your favorite products," "alerts for categories you follow," "points for coming back." And sure, the AI bolts all that on in no time.&lt;/p&gt;

&lt;p&gt;But this is where the game changes. Saving favorites needs login, and login means personal data. A privacy policy, consent flows — they all come riding along. Add a reward like points and that brings its own review. The code takes half a day; getting it approved does not. (For the record, the slick copy AI loves to write — "guaranteed," "100%," "lowest price" — gets flagged more often than you'd think.)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A single feature can push your launch back by weeks. I only learned that after building it all.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  And "while I'm at it" keeps creeping in
&lt;/h2&gt;

&lt;p&gt;Because building with AI is so easy, you keep wanting to add more. A map of nearby stores, a price-trend graph, a wishlist, push notifications… it's genuinely fun on the building side.&lt;/p&gt;

&lt;p&gt;But what people actually wanted was one thing: "What's BOGO this week?" The fancy features don't move anyone, and all that added complexity comes back later as pure maintenance debt. As if keeping the data fresh every week wasn't already enough.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What ships isn't the most elaborate version. It's the simplest one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  In the end, AI only did step 1
&lt;/h2&gt;

&lt;p&gt;Put it in terms of the store app: the screen took one evening — but owning the data every week, keeping it accurate enough to trust, clearing the policy bar on login and rewards, and trimming the greed. All of that lived &lt;em&gt;after&lt;/em&gt; that one evening. And honestly, most people (me included) stop right there.&lt;/p&gt;

&lt;p&gt;An app is like an iceberg. What's above the water is just a sliver.&lt;/p&gt;

&lt;p&gt;"Build an app in 5 minutes with AI" isn't a lie. It's just that those five minutes are the tip of the iceberg. What decides launch and survival sits underwater, and AI doesn't do that part for you. Owning the data, protecting trust, reading the policies, trimming the fat — that, it turns out, was the real "building."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Anyone can build fast now. The difference shows up in what comes next.&lt;/p&gt;

&lt;p&gt;So the next time a "build an app in 5 minutes" video scrolls past, I'm trying not to panic. Everything fast is fast for everyone now. This is where it actually gets interesting.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next time I'll dig into the one of those four that trips people up the most — "review and policy" — right down to which features summon which reviews.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://bluelove3.gumroad.com/l/tmydzb" rel="noopener noreferrer"&gt;Get the $31 Stack Prompt Pack — $19&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
The exact prompts, cost calculator, and n8n templates from this stack.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>webdev</category>
      <category>selfhosted</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>I Built an AI Publishing Stack for $31/Month — Real Numbers After 15 Posts</title>
      <dc:creator>Luna</dc:creator>
      <pubDate>Fri, 10 Jul 2026 14:31:18 +0000</pubDate>
      <link>https://dev.to/moonshot_1341/i-built-an-ai-publishing-stack-for-31month-real-numbers-after-15-posts-4dbd</link>
      <guid>https://dev.to/moonshot_1341/i-built-an-ai-publishing-stack-for-31month-real-numbers-after-15-posts-4dbd</guid>
      <description>&lt;p&gt;I've been building a solo content operation in public for the past month. The goal: run a real publishing workflow — blog posts, analytics, affiliate tracking — entirely on AI automation, and document whether it can pay for itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full stack costs $31/month
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude API (~$20)&lt;/strong&gt;: content drafting, topic generation, quality checks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hetzner CX21 VPS (~$6)&lt;/strong&gt;: self-hosted n8n for workflow automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;.dev domain (~$1)&lt;/strong&gt;: annualized&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Pro (~$4)&lt;/strong&gt;: private repos + Actions minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's actually running on this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Auto-publishes 1 post/day (EN + KO) from a topic queue&lt;/li&gt;
&lt;li&gt;Collects daily view counts via Cloudflare KV&lt;/li&gt;
&lt;li&gt;Tracks affiliate link clicks with a /go/ redirect layer&lt;/li&gt;
&lt;li&gt;Sends Telegram alerts when something breaks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;15 posts live so far. Every post has real numbers — actual traffic, actual revenue, actual mistakes. No "lessons learned" without the receipts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The parts people ask about most
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;n8n self-hosted&lt;/strong&gt;: runs on the Hetzner VPS for free. Handles all scheduling, webhook routing, and API calls. Add a 2GB swap file early — n8n can spike on heavy loads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt caching&lt;/strong&gt;: this one change cut Claude API costs by ~60%. Caching the system prompt and batching overnight runs brought spend from ~$40 to ~$20/month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloudflare KV for analytics&lt;/strong&gt;: Workers increment a view counter on each page load, a nightly cron rolls up daily totals. Free tier covers everything under ~100k reads/day — no separate analytics database needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;The stack works. Whether it earns back the $31 is the question I'm documenting in real time.&lt;/p&gt;

&lt;p&gt;Full breakdown with every line item: &lt;a href="https://builderlog.net/blog/automation-stack-31-per-month/" rel="noopener noreferrer"&gt;builderlog.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to go deep on n8n setup, Claude API cost optimization, or the Cloudflare Workers + KV pattern.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>selfhosted</category>
      <category>cloudflare</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
