Mission Built

An iPhone app from the Rack

MealStack.

Private beta iPhone

Fueling is training. A meal timing tracker for people who train. Your session doesn't move. Your meals do.

Runs on
iPhoneiOS 26 and up
Account
None
Leaves your phone
Only Coachwhat you send it
Your data
Plan filesopen format

The four pillars, in about a minute.

Real screens from the app, not a video, shot in the iPhone Simulator with the clock set for each step. The tour follows the four pillars: protect the protein, the session, the day and the record, a few screens each. Tap where it's ringed, or let it drive.

Click-through demo · real screens from MealStack 0.9.1 · four pillars


Fueling is training.

I sat in a nutrition seminar at the Shaw Strength Summit and heard Nathan Payton say it plainly: if you are not eating properly, you are failing your training. Eating is part of your training.

That sent me home to rebuild how I eat, and then looking for an app that understood it. The meal-timer apps are alarm clocks. The routine apps roll a late morning into the session. The macro trackers know what I ate to the gram and have no opinion about when. Not one of them asks what time you train. So I built the one I needed. Four ideas hold up everything it does.

  1. 01Protect the proteinProtein has no storage tank. Stack it across the day, and never send it out alone.
  2. 02Protect the sessionYour pre-workout meal is equipment, not a snack. It anchors backward from when you train and holds its time.
  3. 03Protect the dayFlights, time zones, a session that moved to 8pm. Change the day to recovery, move the session, swap the plate, keep going.
  4. 04Protect the recordLog when you eat, not when it was due. Today shows what actually landed, so tomorrow is built on the real day.

Read the whole story: Fueling is training →


Breakfast was late. Your carb surge shouldn't be.

Two kinds of meal. The morning meals follow on from the time you actually ate. The carb surge, your pre-workout meal, stays where the session puts it, and so does everything after it. Drag breakfast late and watch which ones move.

Logged breakfast at
7:00 AM
Session
6:00 PM

The morning is meant to finish two hours before the carb surge. When a late breakfast won't allow that, the gaps tighten evenly, rounded to five minutes, and never below two hours; past that point lunch simply lands closer to the carb surge. The carb surge never moves for a late morning, and never past the start of the session: still not eaten when you start training, it's marked "Session started without it" and waits for you to log it or skip it. Move the session itself and everything tied to it moves with it.


Six things the market didn't have in one place.

Timing · Protect the session

The day is anchored to the session, not the clock.

The carb surge, the fuel around the session and the meals after it are tied to the session. Everything before them is worked out from the time you actually ate. A late morning tightens the gaps and says what moved; it never pushes the carb surge past the start of the session.

Other apps: Alarms every N hours, or routines that roll lateness forward into the session.

Macros · Protect the protein

Weighed from the plate, or typed. Never both.

A meal is a list of ingredients and quantities, so the numbers come from the ingredients and editing a portion moves them. The daily target lives apart from the plan, so the editor can say "this plate puts the day 40 g of carbs over" while you are still building it.

Other apps: A food database and a total. No plan to measure the plate against.

Logging · Protect the record

Log when you eat, not when it was due.

The sheet opens on now with 15, 30 and 60 minutes ago one tap away, and shows what every remaining meal does at that time before you commit. Move today's session from the Today screen and the meals tied to it move with it.

Other apps: "Done" means now, so the day keys off the wrong number.

Travel · Protect the day

Home or Away, in one tap.

Flip Travel on Today, or let the app do it when you are far from home. With IronStack on the phone, it is one switch for both apps. Skip a meal and it stays a decision, not a miss. History compares home days to travel days.

Other apps: One schedule, and it assumes you are home.

Surfaces · Protect the protein

You should rarely have to open it.

Notifications carry the plate and two actions: "Ate it now" and "Not yet · 20 min". Home and Lock Screen widgets with a live countdown. A card on the Lock Screen from an hour before each meal to thirty minutes after, with a Log button on it and at the top of the screen.

Other apps: A badge, and a screen you unlock to answer it.

Coach · Protect the day

An AI that proposes. You decide.

Let Coach build the plan, or send it the plan your coach wrote, as a photo or a PDF, and it brings it in for you to review. Ask for targets and a fixed formula does the arithmetic, not the model. Eating out, hand it up to five menu photos, a link or a restaurant name, and it fits options to this meal's numbers. Nothing changes until you tap a card. Not a doctor, and it says so before you ask.

Other apps: A chatbot that talks, or a coach that edits your plan without asking.


Two questions, then get on with your day.

  1. 01

    Pick how to start.

    Just the times, your coach's plan, let Coach build it, or build it yourself; or see a finished day first. Just the times builds a working day from when you eat and train, no AI and no account: the morning meals follow one another from your first meal, the carb surge before the session and everything after it are tied to the session. Five meals by default; change the number in Settings. Put food on the plates when you are ready, or let Coach fill them.

  2. 02

    Log when you actually ate.

    One tap for now, one for thirty minutes ago. The sheet shows what every remaining meal does before you commit, and the notification can log it without opening the app. The carb surge holds. The rest of the day bends around you.

  3. 03

    Ask when the plan breaks.

    Client lunch, airport, empty fridge. Send Coach the menu, a link or what is in the kitchen and it fits an order to this meal's numbers. Nothing changes until you tap. History keeps score, so you can see what the road does to you.

And the rest

Meals are plates. Fuel is what you take for the session rather than as a meal: pre-workout, the jug you sip through the session, the shake after it, electrolytes, creatine, water. It can carry protein, carbs and fat, and those count toward the day's totals. Fuel is never a meal: it isn't in the meal count, doesn't move the meals around it, and isn't scored for timing. It gets its own alert and its own line on the record. Three shelves on the Plan tab: stacks, meals, and ingredients (about two hundred built in, plus your own, entered like the label). Drop a saved meal onto any plate. Apple Health gets the macros at the real eat time; if you allow it, the app shows what other apps logged (never added to yours) and offers your weight. Light and dark. History that scores against the target you set. Your plan is a file on your phone. No account, no sign-in, no cloud sync.


What other apps do, and what this one does instead.

Other appsMealStack
AnchorThe clock.Your session.
A late mealThe next alarm fires anyway.The rest of the day re-flows. The carb surge holds.
MacrosTyped in, or scanned, then summed.Weighed from the plate, measured against a target you set.
Logging timeNow.When you actually ate, with the consequence shown first.
On the roadOne schedule, and it assumes you are home.Home or Away in one tap, or automatic.
Eating outSearch the database, guess the portion.Coach reads the menu against this meal's numbers.
Your dataTheir servers, your account.Your phone. Coach sends only what you give it, after you accept its terms; usage data only if you say yes.
Best atA database of a million foods and a barcode scanner.Timing. Keep the other app for the barcode if you like.

Your data, and the one thing I have not picked.

The code

Closed app. Open data.

MealStack is a closed-source app from Mission Built. What is open is your data: a plan is a plain JSON file in a documented format, the MealStack Schema. Plans and stacks export as those files and import back in. The MealStack name and the marks stay with Mission Built.

Price

Not settled yet. Here is why.

Every Coach question runs on a server I pay for. I want Coach in the app, and I am not willing to lose money keeping it there, so the launch price is an open question: free with Coach on an allowance, a one-time price, or Coach as the paid part of a free app. The answer lands here before it lands in the store.

Your data

On your phone. Two switches.

The plan, the log and the day never leave the phone. Coach is on, but sends nothing until you accept its terms and ask it something; what you send it goes to a server Mission Built runs, and it is metered. Turn it off in Settings any time. Usage data is a second switch the app asks about once. The privacy page says exactly what, where, and for how long.

Not a doctor. Neither is Coach.

I am not a doctor or a dietitian, and nothing on this page or in the app is advice about how you should eat. It is how I manage my own diet. Coach is an AI and is not one either: its targets are estimates from a formula you can read, it declines questions about medical conditions, medication, pregnancy and supplement doses, and it points you to a professional instead. Nothing it proposes changes your plan until you tap.


Private beta, on iPhone, right now.

On TestFlight now, with outside testers

Newest build: MealStack 0.9.1 · Build 86

MealStack runs my own day, every day, and a small group of outside testers is on it with me. I add testers by hand, in small batches, from the email on your Apple ID. You get an invite from Apple, a link to install, a choice of how to start, and a short list of things I would like you to break.

Builds expire every ninety days and you get the next one. The address is used for the invite and nothing else; you can leave from the invite email at any time.

iPhone only · iOS 26 and up · no account · 18 and over

Beta

By invite, from the form. Small batches, added by hand.

Now
App Store

The public door, published by Mission Built.

After the beta

See what changed, and read the fine print.


The ones I get asked.

Is it free?
During the TestFlight beta, yes. Coach runs on a monthly allowance per phone. The launch price is not settled. The fine print above says why, and the answer lands on this page before it lands in the store.
Does it need an account?
No. There is nothing to sign up for. Your plan, your log and your history are files on your phone. Delete all MealStack data, under Start over in Settings, wipes them, and the little the server holds for Coach along with them.
What leaves my phone?
What you send Coach. Coach sends nothing until you accept its terms and ask it something, and you can turn it off in Settings. What you type, photograph or attach goes to a server I run. Usage data goes to an analytics service only if you say yes when the app asks. The privacy page says exactly what, where and for how long.
Is Coach a doctor?
No. Coach is an AI. Its targets come from a formula you can read, its meal ideas are estimates, and it declines questions about medical conditions, medication, pregnancy and supplement doses. Nothing it proposes changes your plan until you tap.
Can I keep my macro tracker?
Yes, and if you lean on a barcode scanner you should. MealStack is the timing layer. It knows the plate, weighs macros from it, and writes them to Apple Health at the time you ate, so the two live side by side.
Does it have streaks?
Yes, for full days: every meal logged or skipped on purpose. A skip you chose is a decision, not a miss, so there is nothing to fudge. Only good habits earn badges, and nothing is taken away. History still scores the week on what actually landed.
How old do I have to be?
Eighteen. MealStack sets targets, plans cuts and reads your weight, and that is for adults.
Android, iPad, watch?
iPhone only, iOS 26 and up. No Android, no iPad layout, no watch app, and none planned for 1.0. The Lock Screen, the widgets and the notifications are where the app lives when it is not open.
Is the code open?
No. MealStack is a closed app. Your plan is yours: plan files are documented JSON (the MealStack Schema), and they go out and come back in. The name and the marks stay with Mission Built.
When is 1.0?
When the beta has proven it on phones that are not mine. The date lands on this page before it lands in the store.

Two apps. One body.

MealStack times the fuel. IronStack keeps the record of the work it fuels. Each one stands on its own, and neither will ever ask you to install the other. Put both on one phone and they start talking about the same person.

Both apps to Apple Health

Live in both

One record of the day

Carries MealStack writes protein, carbs, fat and calories at the time you actually ate. IronStack writes the session as a strength workout, if you switch it on.

Food and training on one timeline in Health, from two apps that never had to know about each other.

Either app to Both apps

Live in both

Travel, one switch

Carries Home or Away, which app flipped it, and when the trip started. A few bytes in a shelf on the phone that only Mission Built apps can open.

Land in Denver, flip it once, or let either app do it when you are far from home. MealStack plans the day for the road; IronStack counts the session in a strange gym toward Road Warrior.

Either app to Both apps

Live in both

One session time

Carries Today's session time, when you move it in either app.

Move the session in IronStack and MealStack says so the next time you open it: Sync to the new time, or Skip. It works the other way too. Neither moves the other by itself.

IronStack to MealStack

Live in both

Fuel follows the work

Carries When today's session started and when it ended.

The shake after the session is called when you finish, not at an hour picked in advance, and the meals after it re-time on the real end. Switch on "IronStack times my after-session meals" in MealStack.

Both apps to Both apps

Live in both

Badges that see both

Carries Whether you trained and ate to plan on the same day.

Double Stacked in both apps, for the days both did their job. In MealStack, Fuelled and Stacked for a carb surge before a session IronStack logged, and Straight off the bar for a shake on time after one.

IronStack to MealStack

IronStack ready · MealStack next

The carb surge knows when you train

Carries When your sessions usually start, by weekday, worked out from your own log.

MealStack anchors the carb surge to the hour you really lift on a Saturday, without you typing it in.

Both apps to Your files

IronStack exports it · MealStack uses its words

One way to write it all down

Carries The Mission Built Schema: one documented, versioned vocabulary. A workout reads like a meal, a program like a plan, a session like a day.

Export from both and a single script or spreadsheet reads the lot. Your data outlives either app.

Either app to Both coaches

Designed

One coach profile

Carries Bodyweight, height, age and goal, the details a coach needs for a target.

Tell one coach once. The other already knows.

"IronStack ready" means IronStack's half is built and waiting, and MealStack reading it is next on MealStack's list. Installing both turns nothing on that you have not said yes to.

A Saturday with both

  1. 7:10 AM MealStack Breakfast logged forty minutes late. The morning tightens; the carb surge does not move.
  2. 10:02 AM IronStack "Three fifteen for three at eight." Chalk stays on the bar. The rest clock starts itself.
  3. 11:14 AM IronStack STACKED. Heavy lower day, 22 working sets, one new record. The workout goes to Health.
  4. 11:45 AM MealStack The shake, called the minute the session ended. The meals after it re-time on the real end.
  5. 9:00 PM Apple Health Apple Health shows the day whole: what you ate and what you lifted, on one timeline.

The rules that outrank the features

Neither needs the other
Delete one and the other works exactly as it did. Nothing in either app pretends the other is there.
Nothing moves without a yes
A moved session asks before it moves anything. The after-session timing is its own switch. Travel is one switch because it is one trip.
It stays on the phone
The two apps talk through Apple Health and a private shelf on your iPhone. No server, no account, nothing in between.
One writer per fact
IronStack owns what happened in the gym. MealStack owns what you ate. Neither edits the other.
The other half IronStack → Log it. Time it. Lift each other up. A lifting log that stays out of your way.

The other tool, and the other half.

Protein · Session · Day · Record

Fueling is training.