Files
samplez/rippr-flutter-src/docs/LAUNCH.md

8.1 KiB
Raw Blame History

Launch

How Rippr gets from "on my phone" to "on the App Store with money coming in" — in stages, because the jump is much bigger than it looks and most of it is not code.

Where things stand: the app is feature-complete on both platforms and has never recorded a real ride. Nothing below should start before port/REAL-RIDE-CHECKLIST.md is done.


Stage 0 — you and your friends (today, free)

What works right now, with no accounts and no stores.

Android — genuinely easy

Send them the APK. That's it.

adb install -r rippr-flutter-1.0-debug.apk     # or just message them the file

They tap it in Files and allow "install unknown apps". It works, it keeps working, and it costs nothing. For riding buddies on Android, this is a complete answer — you may never need the Play Store.

Worth switching to a release build before handing it round: the debug APK is ~172 MB and slower. That needs a keystore, kept somewhere you will not lose it:

keytool -genkey -v -keystore ~/rippr-release.jks -keyalg RSA -keysize 2048 \
        -validity 10000 -alias rippr
flutter build apk --release --split-per-abi     # ~3 files, ~20 MB each

Back that keystore up. Lose it and you can never update an app that shipped with it.

iOS — awkward, and the awkwardness is the point

Free signing (see INSTALL.md in the samplez repo, alongside the APK) gives 7-day builds, three apps at a time, and needs your Mac every time. Fine for you. Miserable for a friend who just wants to ride.

There is no free way around it. Apple deliberately does not allow casual iPhone sideloading.

If any of your friends ride with an iPhone, Stage 1 is not optional.


Stage 1 — a real group of testers (~$99/yr + $25 once)

This is the stage that actually fits "me and my friends", and it is a big quality-of-life jump over Stage 0.

TestFlight — the single best upgrade

Requires the Apple Developer Program, $99/yr.

  • Builds last 90 days, not 7
  • 100 internal testers and up to 10,000 external via a public link
  • Friends install the TestFlight app and tap once — no Mac, no cables, no trust dialogs
  • Updates push automatically
  • External testers need a light App Review pass (usually a day); internal testers do not

For a riding group this is effectively "the app store, for people I choose". Many projects happily live here forever and never publish publicly.

Google Play internal testing — optional

$25, one time, forever. Up to 100 testers, no review for the internal track. Worth it mainly if handing out APKs starts to annoy you, or you want automatic updates on Android too.

What you must add before either

  • A privacy policy URL. Both stores require one for anything touching location, even in testing. It can be a single static page: what is collected (GPS while recording), where it goes (nowhere — stays on the device), and how to delete it (delete the ride, or the app).
  • Switch the bundle id from com.rippr.port to something you own, e.g. com.dylan.rippr.
  • A release build, on both platforms.

Stage 2 — public launch

Everything in Stage 1, plus the parts that are genuinely work.

Apple

  • Privacy nutrition labels — Location → Precise, not linked to identity, App Functionality only. Details in port/RELEASE-IOS.md.
  • Expect to justify background location. It is the most common rejection for apps like this. Head it off with a demo video of a real ride in the review notes, showing the user pressing Start.
  • App name, subtitle, keywords, screenshots at several device sizes, a support URL.
  • Review is typically 24–48 hours, and a rejection round is normal. Budget two weeks.

Google

  • Data Safety form — the Play equivalent of nutrition labels, and it must match reality.
  • Background location gets extra scrutiny on Play: a written justification and often a video. Rippr's case is strong (a ride recorder is the textbook example), but it is a real review step.
  • Store listing, feature graphic, screenshots.

Things that only matter once strangers use it

  • Crash reporting. Currently none — the v3 backlog notes a recorder that dies mid-ride leaves no trace beyond logcat. Sentry or Crashlytics before public launch.
  • A support address people can actually reach.
  • Whatever the real ride teaches you about battery. Strangers will not forgive what a friend would.

A positioning note, since you ride bikes and motorcycles

Everything user-facing currently says motorcycle, but the recording pipeline is entirely activity-agnostic — it records positions and speeds, and nothing in it cares what you are sitting on. V3-BACKLOG.md already carries activity type per ride as an idea.

That matters here rather than only in the backlog, because it decides the store category, the screenshots and who finds the app. Cyclists are a far larger audience than motorcyclists and are already used to paying for ride apps. Deciding whether Rippr is a motorcycle app or a ride recorder is a positioning question worth settling before writing a store listing, not after.

It is also cheap: an activity column on Trip and a picker. It needs a real Migration, since the destructive fallback is gone.


Stage 3 — monetization

Only worth designing once people are actually riding with it. But the shape matters because it changes the architecture, and it is worth knowing which door you are opening.

The options, from least to most commitment

Paid up front — a few dollars, once. Simplest possible. No servers, no accounts, no recurring obligation. Sells poorly in a category where Strava is free, but the cost to you is nearly zero and it fits an app that works entirely offline.

Free, with a one-time unlock. Recording free forever; pay once for extras — export formats, unlimited history, themes. No servers needed if the extras are local. Good match for Rippr as it exists today.

Subscription for cloud features. The v3 backlog already points here: accounts, cloud backup, group rides. This is the only model that justifies recurring money, because you have recurring costs. It is also the biggest jump: a server, authentication, a privacy stance, and an obligation to keep someone's ride history alive.

Note the coupling. Cloud backup needs accounts; accounts need a privacy policy with teeth, GDPR-style deletion, and — on iOS — in-app account deletion, which Apple requires of any app that lets you create an account. Group rides need all of that plus live location sharing between people, which is a consent question, not a technical one.

The numbers

  • Apple and Google both take 30%, dropping to 15% under their small-business programmes (under $1M/yr). Enrol; it is not automatic on Apple's side.
  • Apple: $99/yr. Google: $25 once.
  • Server costs are yours. A modest VPS runs a group-ride backend for single-digit dollars a month until it doesn't.
  • Payments are handled by the stores for digital goods — you may not route around them for in-app features.

What I would actually do

Keep it free while it is you and your friends. If it grows, the honest first step is a one-time unlock for local extras — no servers, no obligations, no privacy surface.

Only build the subscription once someone who is not your friend asks for cloud backup. Paid storage of other people's location history is a commitment that outlives your interest in maintaining it, and that is worth entering deliberately.


The order of operations

  1. Ride with it. port/REAL-RIDE-CHECKLIST.md. Nothing else matters until the numbers are right — and iOS background suspension (item I3) may still force a change of GPS engine.
  2. Release builds, real bundle id, a keystore you have backed up.
  3. A one-page privacy policy.
  4. $99 Apple → TestFlight. Your friends stop needing your Mac.
  5. Live with it for a season. Let real use decide what is missing.
  6. Only then: public listings, crash reporting, and a monetization model chosen from evidence rather than from a table like this one.