<?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: Patrick Hawkins</title>
    <description>The latest articles on DEV Community by Patrick Hawkins (@pathawkinsart).</description>
    <link>https://dev.to/pathawkinsart</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%2F4198844%2F323e3772-fdbc-4501-bd5f-37cf51d4afba.png</url>
      <title>DEV Community: Patrick Hawkins</title>
      <link>https://dev.to/pathawkinsart</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pathawkinsart"/>
    <language>en</language>
    <item>
      <title>Make Your iPhone Into a Mac to Create Apps for the App Store</title>
      <dc:creator>Patrick Hawkins</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:02:56 +0000</pubDate>
      <link>https://dev.to/pathawkinsart/make-your-iphone-into-a-mac-to-create-apps-for-the-app-store-k51</link>
      <guid>https://dev.to/pathawkinsart/make-your-iphone-into-a-mac-to-create-apps-for-the-app-store-k51</guid>
      <description>&lt;p&gt;&lt;em&gt;Part 2 of **Building Apps Without Code&lt;/em&gt;&lt;em&gt;. Part 1 is how I built my first app, Steamy Dumplings, without knowing how to code. This one is for people who don't own a Mac — and can't justify buying one — but still want to ship iPhone apps.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I don't own a Mac. I never have. Everything below was done from my iPhone.&lt;/p&gt;

&lt;p&gt;But I do have iPhone apps — real ones, in TestFlight, one of them submitted to the App Store. I'm a no-code builder. I work with an AI partner (Forge, my Muse agent) who writes the code. My job is the ideas, the decisions, and the testing on my phone.&lt;/p&gt;

&lt;p&gt;That worked fine — until we nearly ran out of the thing we were borrowing to build on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: the line, and the cap
&lt;/h2&gt;

&lt;p&gt;To ship an iPhone app, Apple requires a Mac. Not "prefers." Requires. Xcode — the tool that compiles, signs, and uploads an iOS app — only runs on macOS, on Apple hardware.&lt;/p&gt;

&lt;p&gt;We were using GitHub Actions' Mac runners. It worked, but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We'd burned &lt;strong&gt;1,826 of 2,000 included minutes&lt;/strong&gt; by the morning of Oct 20. macOS minutes count at 10x, so what's left looks bigger than it is.&lt;/li&gt;
&lt;li&gt;Runners queue. You push, you wait in line, you hope.&lt;/li&gt;
&lt;li&gt;The obvious fix — buy a used Mac mini for ~$433–$500 — broke my own rule: I only buy gear with money these projects have &lt;em&gt;earned&lt;/em&gt;. We need to make money first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I said the thing that started all of this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We will build an app. No Mac needed. No line."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  First, the research: why do you actually need a Mac?
&lt;/h2&gt;

&lt;p&gt;Forge checked our own build workflows before we guessed. It's not one job, it's five, all bundled inside Xcode:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Compiling&lt;/strong&gt; the code for iPhone, using the iOS SDK that only ships inside Xcode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Packaging&lt;/strong&gt; icons, assets, and storyboards with Mac-only tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code signing&lt;/strong&gt; the app so Apple trusts it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archiving&lt;/strong&gt; it into the actual &lt;code&gt;.ipa&lt;/code&gt; file Apple accepts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload validation&lt;/strong&gt; — since April 28, 2026, Apple requires Xcode 26 / the iOS 26 SDK or the upload is rejected&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can't do those five on an iPhone. There's no Xcode for iOS. What you &lt;em&gt;can&lt;/em&gt; do is hide the Mac somewhere else — and build a simple front door to it on your phone.&lt;/p&gt;

&lt;p&gt;That's the whole idea: &lt;strong&gt;make your iPhone act like the Mac you don't have.&lt;/strong&gt; Simple cards for each of my apps, one big "Build to TestFlight" button, plain-English status. No fake Mac desktop — I killed that idea. Simple cards. Your iPhone is the front door, a real Mac in the cloud does the five jobs behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two free lanes we found
&lt;/h2&gt;

&lt;p&gt;We didn't invent a Mac. We found two we already had access to, for free:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codemagic — the button lane.&lt;/strong&gt; 500 free macOS minutes a month on M2 Macs for individuals. It has an API, so a button in an app can trigger a real build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xcode Cloud — Apple's own lane.&lt;/strong&gt; 25 compute hours a month, already included in the Apple Developer Program I'm already paying $99/year for.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combined, that's way more headroom than GitHub was giving us — and no line we don't control.&lt;/p&gt;

&lt;p&gt;I tested the prototype on my iPhone that afternoon. Tap Dumplings → watch the 5 steps check off → "In TestFlight." Simulation, clearly labeled. It worked. I gave the go: connect Codemagic, make it real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then we failed three times in a row
&lt;/h2&gt;

&lt;p&gt;This is the part most build stories skip.&lt;/p&gt;

&lt;p&gt;Build #1 failed. Build #2 failed. Build #3 failed — all at the exact same step: writing the App Store Connect API key.&lt;/p&gt;

&lt;p&gt;The key existed. It was saved in Codemagic. It worked everywhere else. But inside the build, the key file came out empty, and the signing step rejected it.&lt;/p&gt;

&lt;p&gt;Build #3 added a diagnostic that finally cracked it: Codemagic's portal integration doesn't hand your actual key to build scripts. It hands them a &lt;strong&gt;72-character reference token&lt;/strong&gt; pointing at the key. If your script treats that token like the key itself, you get an empty file and a confusing error.&lt;/p&gt;

&lt;p&gt;The fix wasn't in the portal at all. It was moving the key into an encrypted environment-variable group and letting the build script prefer that. One commit later:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build #4 succeeded end to end in 3 minutes flat.&lt;/strong&gt; Key valid, archive signed, uploaded. At 4:43 PM ET on Oct 20, &lt;strong&gt;Steamy Dumplings build 16 landed VALID in App Store Connect.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No Mac in my house. No GitHub line. A button, a cloud Mac I don't own, and a build Apple accepted.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we deliberately did NOT ship on
&lt;/h2&gt;

&lt;p&gt;We also researched a more radical idea — building on Linux with open-source Xcode replacements, no Mac anywhere at all. Those projects are public and real, but Apple's license restricts the iOS SDK to Apple-branded hardware, so that path carries a terms risk for a developer account.&lt;/p&gt;

&lt;p&gt;I'm not risking the account my apps live on for an experiment. The method in this article — your iPhone in front, a legitimate cloud Mac behind it, through Apple's own Developer Program — is the safe, repeatable one. That's the one I'm teaching here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The iPhone front door got its final wiring that same evening. We rebuilt it with the trigger key held safely in its backend, instead of bolting it on — and then I pressed the button myself. The app ran it all the way to "In TestFlight," and Steamy Dumplings build 17 landed VALID in App Store Connect that night. The button isn't a prototype anymore. It's how I ship.&lt;/p&gt;

&lt;p&gt;But the question we set out to answer is already answered:&lt;/p&gt;

&lt;p&gt;You don't need to buy the Mac first. You need to understand exactly what the Mac does, find where that work can legally live, and build the simplest possible door to it.&lt;/p&gt;

&lt;p&gt;For me, that door is an app on my phone, with my apps as cards, and one button.&lt;/p&gt;

&lt;p&gt;No Mac. No line.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apple Developer Program&lt;/strong&gt; — you need this either way, it's what makes TestFlight and the App Store possible: &lt;a href="https://developer.apple.com/programs/enroll/" rel="noopener noreferrer"&gt;https://developer.apple.com/programs/enroll/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xcode Cloud&lt;/strong&gt; — Apple's own cloud build service, 25 hours/month included with that program: &lt;a href="https://developer.apple.com/xcode-cloud/" rel="noopener noreferrer"&gt;https://developer.apple.com/xcode-cloud/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codemagic&lt;/strong&gt; — the cloud-Mac service we built on: &lt;a href="https://docs.codemagic.io/yaml-basic-configuration/yaml-getting-started/" rel="noopener noreferrer"&gt;https://docs.codemagic.io/yaml-basic-configuration/yaml-getting-started/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codemagic code-signing with environment variables&lt;/strong&gt; — the docs behind the fix that saved Build #4: &lt;a href="https://docs.codemagic.io/yaml-code-signing/alternative-code-signing-methods/" rel="noopener noreferrer"&gt;https://docs.codemagic.io/yaml-code-signing/alternative-code-signing-methods/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My apps and projects&lt;/strong&gt; — Hawkins Crafting Co.: &lt;a href="https://hawkinscraftingco.com" rel="noopener noreferrer"&gt;https://hawkinscraftingco.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Patrick Hawkins builds apps, books, and products with AI as a creative partner — no code background. He writes about the real builds, including the failures, here on DEV.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>nocode</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Built My First App Without Knowing How to Code</title>
      <dc:creator>Patrick Hawkins</dc:creator>
      <pubDate>Wed, 21 Oct 2026 16:58:50 +0000</pubDate>
      <link>https://dev.to/pathawkinsart/i-built-my-first-app-without-knowing-how-to-code-28b1</link>
      <guid>https://dev.to/pathawkinsart/i-built-my-first-app-without-knowing-how-to-code-28b1</guid>
      <description>&lt;p&gt;&lt;em&gt;Part 1 of **Building Apps Without Code&lt;/em&gt;&lt;em&gt;. This should have been my first article, because this is where it all started.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I can't code. Not "I code a little." I mean I have never written the code behind anything I've shipped.&lt;/p&gt;

&lt;p&gt;And I have an app — a real one, submitted to the App Store.&lt;/p&gt;

&lt;p&gt;It's called &lt;strong&gt;Steamy Dumplings&lt;/strong&gt;, and it's the reason everything else I'm doing exists. So let me tell this one properly, from the start.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Steamy Dumplings is
&lt;/h2&gt;

&lt;p&gt;Steamy Dumplings is a virtual blind-box app. If you've ever bought a mystery toy and felt that little rush before you open it, that's the feeling we built around.&lt;/p&gt;

&lt;p&gt;You open a bamboo steamer, a dumpling is revealed, and it goes on your shelf — your collection, your trophies. Simple on purpose. The fun is in the reveal and in collecting.&lt;/p&gt;

&lt;p&gt;By October 7 we had &lt;strong&gt;500 dumplings wired into the app&lt;/strong&gt;. Five hundred. I didn't build a system for managing 500 collectibles in code, because I couldn't. I kept saying what the next one should feel like, and we kept going until the shelf was real.&lt;/p&gt;

&lt;p&gt;The idea came from my son. He was bringing home these dumpling toys, and then we found out something inside them was harmful — causing burns or something like that to kids when they burst open. I thought the idea was cool, being able to collect all these different kinds of dumplings, but I didn't like the idea of having a harmful toy in the house. So I decided to make a game where you could still collect them — but it was on the phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  How building with AI actually worked, day to day
&lt;/h2&gt;

&lt;p&gt;I work with an AI partner — Forge, my Muse agent. Forge writes the code. We don't pretend otherwise.&lt;/p&gt;

&lt;p&gt;My job is everything else:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The ideas.&lt;/strong&gt; My brain goes a thousand miles a minute. That's my ADHD, and for years it meant a head full of ideas and not enough finish-line bandwidth to learn to code &lt;em&gt;and&lt;/em&gt; build the thing. This partnership changed the maths: the ideas could finally get out of my head.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The decisions and the taste.&lt;/strong&gt; What the steamer should look like, what's too much, when a reveal doesn't feel right. An AI can generate a hundred versions — somebody still has to point and say "that one, and here's why the others are wrong."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The testing.&lt;/strong&gt; On a real phone, in real hands — including my son Jack, who's 12, and was one of our playtesters. Kids do not protect your feelings about your app, which is exactly why you want them testing it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's what "building without coding" actually looks like. Not one magic sentence. A conversation, over and over: I describe it, Forge builds it, I say what's wrong, we go again.&lt;/p&gt;

&lt;p&gt;And Jack did more than test it. He gave me a lot of good ideas that have been put into the game — most of them about how the game looks, and things that improved how it plays.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hardest parts were not the parts I expected
&lt;/h2&gt;

&lt;p&gt;I assumed the hard part would be "the code." It wasn't — I never touched it. The hard parts were:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Saying exactly what I meant.&lt;/strong&gt; "Make it feel better" is not an instruction. Learning to describe what was in my head clearly enough to build took real practice. That skill, honestly, is most of the job now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Knowing when to stop adding things.&lt;/strong&gt; Every idea sounds good at midnight. Half of building this app was deciding: does the first version need this feature, or does it need to &lt;em&gt;exist&lt;/em&gt; first? It needed to exist first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The unglamorous Apple stuff.&lt;/strong&gt; Turning a working web build into a real iPhone app is a whole second project. We started with a web build and demo so people could try it. Going native meant buying the Apple Developer Program on October 14 — &lt;strong&gt;$99 a year&lt;/strong&gt;, real money out before the app had earned a cent. Then Forge hit a wall: Apple's API simply wouldn't create the App Store Connect record for the app. So I created it myself, manually. The human had to do the one step the automation couldn't. That happens more than people admit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Problems you only find on a real phone.&lt;/strong&gt; Our builds ran on cloud Macs — I don't own a Mac — and went up to TestFlight. One build had a sound problem we only caught by testing on an actual phone; the fixed build was confirmed working on device before it became the one we submitted.&lt;/p&gt;

&lt;h2&gt;
  
  
  The milestone: submitted
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;October 19, Steamy Dumplings v1.0 was submitted&lt;/strong&gt; and sat at "Ready for Review," set to release automatically if Apple approves it.&lt;/p&gt;

&lt;p&gt;As I write this, Apple hasn't approved it yet, and I'm not going to pretend otherwise. That's fine — the thing I set out to prove is already proved. A person who cannot code described an app, made the calls, tested it on his phone and with his kid, paid the $99, did the manual step Apple required, and got a real app through the real submission door.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell another non-coder
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Your job isn't code. Your job is knowing what you want.&lt;/strong&gt; If you can describe it, judge it, and keep deciding, you have the skills that can't be handed off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expect a conversation, not a vending machine.&lt;/strong&gt; We built this together, in loops, with plenty of wrong versions. Expect one prompt to do it and you'll quit at the first bad build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test it in real hands early.&lt;/strong&gt; Especially a kid's, if you can borrow one. They'll find what's boring and what's broken faster than anyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Budget for the boring gates.&lt;/strong&gt; The $99, the accounts, the records you create yourself — that's not a sign you're doing it wrong. It's the toll booth, and everybody pays it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ship the first one small and real.&lt;/strong&gt; Steamy Dumplings is not everything I imagined on day one. It's the version that exists. Everything I'm building now exists because this first one got finished.&lt;/p&gt;

&lt;p&gt;You don't need permission from a skill you don't have. You need a first app.&lt;/p&gt;

&lt;p&gt;This was mine.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Patrick Hawkins builds apps, books, and products with AI as a creative partner — no code background. He writes about the real builds, including the failures, here on DEV.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Follow-up article: "Make Your iPhone Into a Mac to Create Apps for the App Store" — how I kept building and submitting apps without ever owning a Mac.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;See what I'm building: &lt;a href="https://hawkinscraftingco.com" rel="noopener noreferrer"&gt;Hawkins Crafting Co.&lt;/a&gt; — Steamy Dumplings and all my other projects live there.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nocode</category>
      <category>ai</category>
      <category>beginners</category>
      <category>ios</category>
    </item>
  </channel>
</rss>
