← Back to Guides
8 min readBeginner
Share

Planning a Mobile App Before You Prompt

A repeatable planning process for mobile apps — scope, screen inventory, navigation map, data model, and a spec the AI can actually build from.

Planning a Mobile App Before You Prompt

The difference between a mobile app that comes together in a weekend and one that turns into a tangle of half-broken screens is almost never the prompting. It's the planning. Ten minutes deciding what you're building saves hours of the AI confidently building the wrong thing.

This guide gives you a planning checklist you can reuse for any app. Fill it out in a plain text file, keep it open, and paste the relevant parts into your prompts as you go.

Step 1: Write the one-sentence core loop

Before screens, before features, answer this: what does a user open the app to do?

A user opens the app to log a workout and see their streak.

If you can't say it in one sentence, you don't have an app yet — you have a pile of features. The core loop is your north star. Every screen either serves it or gets cut for v1.

Step 2: List the screens

Write down every screen the app needs. Keep it flat and boring:

- Onboarding / sign in
- Home (today's workout + streak)
- Log workout
- History
- Workout detail
- Settings

Six to eight screens is a healthy v1. If your list is twenty screens long, you're planning v3. Circle the two or three screens that directly serve the core loop — those get built first.

Step 3: Draw the navigation map

Screens aren't enough; the AI needs to know how they connect. Sketch the structure — you don't need a design tool, indentation works:

Tabs:
  Home
    -> Log workout (modal)
    -> Workout detail (push)
  History
    -> Workout detail (push)
  Settings

This tells the AI three things it would otherwise guess wrong: what's a tab vs. a stack, what opens as a modal vs. a pushed screen, and which screens are reachable from where. Mobile navigation is opinionated — deciding this up front prevents the AI from inventing a structure you'll have to unwind.

Step 4: Define your data

List the things your app stores and their fields. This becomes your data model:

Workout
  - id
  - date
  - type (run | lift | yoga)
  - durationMinutes
  - notes

User settings
  - reminderTime
  - units (metric | imperial)

Then answer two questions that shape the entire build:

  • Where does this live? On-device only (local storage / SQLite), or synced to a backend? On-device is dramatically simpler and free — start there unless you truly need multi-device sync or accounts.
  • Does it need to work offline? Most mobile apps should. Decide now, because retrofitting offline support later is painful.

Step 5: Note the platform realities

A short list of constraints keeps the AI from generating web-shaped code that breaks on a phone:

  • Permissions — camera, location, notifications, photos. Each needs a justification string, and each requires the user to approve it. List which ones you need.
  • Safe areas — notches and home indicators. The AI should respect SafeAreaView; remind it.
  • The Android back button — a hardware/gesture back exists on Android and not iOS. Navigation must handle it.
  • Keyboard — forms need to scroll so the keyboard doesn't cover inputs.

You don't have to solve these now. You just have to name them so they're in the plan.

Step 6: Turn it into a spec the AI can read

Combine the above into one document — call it SPEC.md — and keep it in your project. A good spec is short:

# App: Streak

## Core loop
User logs a workout and sees their streak.

## Stack
Expo + React Native, TypeScript, Expo Router.
On-device storage (SQLite). No backend for v1. Offline-first.

## Screens & navigation
Tabs: Home, History, Settings.
Home -> Log workout (modal), Workout detail (push).
History -> Workout detail (push).

## Data
Workout { id, date, type, durationMinutes, notes }
Settings { reminderTime, units }

## Platform notes
Notifications permission for reminders. Respect safe areas.
Handle Android back. Forms scroll above keyboard.

Now your prompts get short and precise because the context lives in the spec:

Using SPEC.md, build the Log workout modal screen. Form fields for type, duration, and notes; save to SQLite; dismiss on save.

Step 7: Sequence the build in vertical slices

Don't build all screens then wire them. Build one vertical slice at a time — a single screen that works end to end, from UI to data and back:

  1. Home screen showing a hardcoded streak (proves layout + navigation).
  2. Log workout saving to real storage (proves the data layer).
  3. Home reading the real streak from storage (closes the core loop).
  4. Everything else — history, detail, settings — one slice at a time.

After slice 3 you have a working app doing its one job. That's the moment to test on a real device and decide what's actually worth adding.

The planning checklist

Copy this into a file for your next app:

[ ] Core loop in one sentence
[ ] Screen list (circle the 2-3 core screens)
[ ] Navigation map (tabs / push / modal)
[ ] Data model (entities + fields)
[ ] Storage: on-device or backend? offline: yes/no?
[ ] Platform notes (permissions, safe areas, back button, keyboard)
[ ] SPEC.md written
[ ] Build order: vertical slices, core loop first

Ten minutes here changes the whole build. The AI is a fast, tireless builder — but it builds exactly what you point it at. Point it well.

Next steps

Stay in the flow

Get vibecoding tips, new tool announcements, and guides delivered to your inbox.

No spam, unsubscribe anytime.