ROADMAP · CONCEPT → APP STORE
From an idea to an app you can download.
The whole path, in order — everything already behind us, the one thing we’re standing on right now, and what’s still ahead. The plan is Google Play first (cheap, build on either machine), Apple second (needs the Mac and the yearly fee). Nothing here costs a dollar until we’re happy with what we’ve built.
✓ done→ next up☐ ahead
PHASE 0
The site itself
✓ COMPLETEDefine the concept
Hybrid-authorship newsroom: contributors bring the story, Ella (AI) writes it, both names on the byline. Disclosure up front, real sources only.
Build the website
Next.js app — marketing front, story index, flat article routes, the drafting pipeline, contact and disclosure pages.
Ship it live on the web
Hosted on Vercel at the live domain with the content pipeline, running clock, and brand in place.
Already installable (PWA groundwork)
The site ships a web manifest and a service worker, so it’s already a Progressive Web App — the foundation a store wrapper builds on.
PHASE 1
Decide to go mobile
✓ COMPLETEChoose to pursue app stores
Take the existing web app toward downloadable Google Play and Apple App Store listings.
Confirm the two machines
Windows PC holds the code (does all coding + Android builds); the Mac is on hand for the iOS build and submission Apple requires.
Settle the order & the budget
Google first ($25, one-time). Apple later ($99/yr, needs the Mac). Build and QA everything for free before paying anyone.
PHASE 2
Architecture decision
✓ COMPLETEPick how the app loads the site — chose (A), load the live site
Decided after reading the repo. Two choices were on the table: (A) a shell that loads the live Vercel site; or (B) a static front-end bundled into the app that calls the Vercel APIs. We went with A— the site is server-rendered straight from Blob and has no public content API, so B wasn’t “more work,” it was a whole second front-end to build and maintain forever, stale the moment a new story drops. For a news app, freshness beats offline. A keeps the app in lock-step with every deploy, the existing service worker already caches visited pages for offline resilience, and the native push feature in Phase 3 — not the bundling — is what clears Apple’s “just a website” review. B stays documented as the fallback if offline-first ever becomes a real goal.
Choose the wrapper toolchain — Capacitor
Locked in Capacitor: it wraps the existing web app and serves both the Google and Apple builds from one project.
PHASE 3
Build the Android app
→ NEXTAdd the wrapper to the project
Capacitor 8 installed and configured against the Next.js build, pointed at the live site (
server.url). App ID com.sharethebyline.app; the Android native project is scaffolded and cap doctor passes.App identity & assets
Name (Share the Byline) and package ID set; adaptive launcher icons and light/dark splash screens generated across every density from brand source art (regenerate in one command for final art); paper status bar with dark icons to match the masthead. Safe-area is handled by the site’s own responsive CSS, since the app loads it live.
Add at least one genuine native feature
Push notifications are built end-to-end: the app asks permission and registers on launch, the server stores device tokens and fans out via Firebase Cloud Messaging, and a new byline can notify every phone — tap it and the article opens. This is what keeps Apple from bouncing it later as a “just a website” wrapper. One free Firebase project switches it on (see
PUSH_SETUP.md).Produce a real installable buildYOU ARE HERE
Generate the Android app bundle / APK on the Windows machine.
PHASE 4
QA — just us, free
☐ AHEADTest in the emulator
Run it on virtual Pixel / Galaxy devices in Android Studio.
Sideload onto a real phone
Install the actual app on your own Android phone over USB and live with it — the truest test, still costs nothing.
Iterate until you're happy
As many rounds as it takes. No money has changed hands yet, and none needs to until this step passes.
PHASE 5
Publish to Google Play
☐ AHEADPay the $25 and open a Play Console account
One-time fee, no renewal. This is the first dollar spent — and only after you’ve signed off on the build.
Store listing
Title, description, screenshots, privacy policy, content rating, data -safety form.
Closed test, if Google requires it
New personal accounts sometimes must run a ~14-day test with a few testers before going fully public. We’ll know which applies once the account exists.
Submit for review & go live
Upload the signed bundle, submit, and publish once approved.
PHASE 6
Apple App Store (later)
☐ AHEADPay the $99/yr Apple Developer fee
Recurring. Covers as many apps as you want under the one account.
Build & sign on the Mac
iOS binaries must be compiled and signed in Xcode on macOS — this is where the second machine earns its keep.
Test in the iOS Simulator
Confirm the app and its native feature behave before submitting.
Submit via App Store Connect
Listing, screenshots, privacy labels, then upload and submit. Expect a stricter review than Google’s — the native feature from Phase 3 is what carries it through.
Where we stand: the site is built and live, the architecture is decided — a Capacitor app loading the live site, with push notifications as the native feature — and the two machines are ready. The next move is the first build: wrapping the app on the Windows machine. Everything from here is free to build and test until the moment we choose to publish.