product-development mvp app-development small-business swift

From Idea to App Store: What It Actually Takes to Ship a Product as a Small Team

Most ideas die between conception and a shipped product. A worked example, using Celestium's astrology engine and app, of what it takes for a small team to carry one all the way to the App Store.

Where ideas actually die

Most product ideas don’t fail because the idea was bad. They fail in the gap between “we should build this” and an actual thing a stranger can download and use. That gap has a specific shape: someone has to own the engine (the real computation or logic underneath, not a slide describing it), the product wrapped around it, the brand that makes it legible, and the distribution that gets it in front of anyone at all. Most small teams have one or two of those. Almost nobody has all four, which is why so many good ideas stall at a prototype, a pitch deck, or a Figma file that never ships.

I come at this from ten-plus years across wellness, startups, supply chain, and field operations, where the pattern repeats regardless of industry: the work that stalls isn’t the hard, judgment-heavy work, it’s the handoffs. Product development for small teams fails for the same reason ops work fails, nobody owns the whole arc end to end. Everyone owns their piece and the seams are where the momentum dies.

So instead of arguing the point abstractly, here’s how I actually took one from zero to shipped.

The worked example: Celestium

Celestium started as a bet that a premium astrology product needed a real engine behind it, not a wrapper around someone else’s API. Off-the-shelf astrology APIs are limited, expensive at scale, or don’t expose the structured data a deeper interpretation layer actually needs. If the engine isn’t yours, you’re renegotiating with a vendor every time the product wants to grow past what the API was built for.

So I built the engine first. It’s a four-module Swift package:

  • CelestiumEngine, the core astrological computation: natal charts, transit synthesis, astrocartography, human design, a tarot deck, and a comprehensive interpretation layer on top, including a traditional-astrology audit harness that checks the engine’s output against canonical references.
  • CelestiumApp, the SwiftUI shell that actually presents readings to a user.
  • CelestiumUI, the shared design system and view components, so the interface stays consistent as the product grows.
  • CelestiumCLI, a command-line surface for batch generation and testing, which is also what powers product fulfillment behind the scenes.

That’s roughly 103,000 lines of Swift, with tests living alongside each module, not bolted on after. It’s live on the App Store today for iPhone, iPad, and Mac, and it keeps iterating release over release rather than sitting frozen the day it launched.

On top of that engine sits Celestium, the productized natal offering itself: an 8-archetype interpretation layer that matches a chart to a primary archetype and a secondary modulation, with two SKUs, a standard portrait and a premium deep-dive that layers in transit weather. The engine does the computation; the archetypal layer is where the human judgment about what actually matters in a chart gets encoded so it can scale past one person doing bespoke readings.

What “conception to App Store” actually required

Four things had to be true at the same time, and skipping any one of them is usually where a small team’s product idea stalls out instead of shipping:

Someone had to own the engine. Not describe it, build it. The astrology domain logic, the precision of the computation, the interpretation surfaces, all of it had to live in code that could be tested and verified, not in a spec document waiting for an engineer.

Someone had to own the product, meaning the actual interface a person uses, not just the capability underneath it. A powerful engine with no shell around it is a research project, not a product. CelestiumApp and CelestiumUI exist specifically so the computation is legible and usable, not just correct.

Someone had to own the brand, meaning the thing has a name, a visual identity, and a reason a stranger would trust it enough to download it. Celestium isn’t “an astrology feature,” it’s its own product with its own presence, which matters more than most technical teams want to admit.

Someone had to own distribution, meaning actually getting it through App Store review, keeping it live, and shipping updates instead of treating launch as the finish line. A shipped-once app that never iterates again is barely different from a prototype that never shipped at all.

Most stalled ideas are missing one of these, usually the first or the last. Teams that are strong technically often build a beautiful engine and never wrap it in something a non-technical person can use or find. Teams that are strong on brand and distribution often ship something that looks real and isn’t, a thin layer over an API they don’t control, that breaks or gets expensive the moment it needs to scale.

Why this matters for a small team, specifically

You don’t need a large team to do this. You need someone who can hold the whole arc in their head at once, engine through distribution, so the seams between engine and product and brand and shipping don’t become the place where the project quietly dies. That’s a different skill than being a strong engineer or a strong designer in isolation; it’s the same systems-reading instinct I bring to operations work, applied to a build instead of a process. I’ve written about that read-the-system instinct here, and it’s the same lens whether the “system” is a field-rep onboarding pipeline or a four-module Swift engine.

If you’re a small team sitting on an idea that’s been “almost started” for a while, a rough prototype that never became a real product, or an MVP that needs a real engineer’s eye on the architecture before you sink more time into it, that’s the kind of build I take on. Whether it’s a full done-for-you systems build or a narrower scoping and architecture engagement, the starting question is the same one I asked before writing a line of Celestium’s engine: what does this actually need to be true, end to end, to become a real, shippable thing.

If that’s where you are, get in touch and tell me what the idea is and where it’s stuck. That’s usually enough to know where to start.

Want the deeper story?

I write essays about identity, transition, and building a life that fits — on Substack.

Read With Jhi