App · v2

Map

What carries over from v1 unchanged. Everything else is open.

Flows

Get started
Both · Once
  1. Landing
  2. Pick store
  3. Sign in (contact, card)
  4. Home
Order
Both · Every trip
  1. Home
  2. Order
  3. Menu
  4. Meal
  5. Groceries
  6. Checkout (pickup or delivery)
  7. Confirmed
Bring a recipe
Both · Whenever
Change or cancel
Both · Before cutoff
  1. Order link | Home
  2. Order
Pickup
Both · Day of
  1. Notification
  2. Pickup (pay at till or in app)
Cook
Both · In the kitchen
  1. QR | Home
  2. Cook
  3. Recipe
Return containers
Both · Next trip
  1. Home
  2. Containers

Screens

/app/order/:id/checkout · Both

When, where, and place. Nothing is charged here.

The user places the order.

The user picks a pickup day. Only days with room are offered. Prepped meals close two days before; portioned closes half a day before.

The user can switch to delivery: an address and how we get in, prefilled from a host link, and the delivery fee. Delivery is paid in the app.

The user sees meals, groceries, delivery fee if any, GST, total, what they saved, and when the order closes.

The user sees the card on file. It holds the container deposit and covers a no-show; it is not charged for pickup. With no card yet, the pay sheet takes one.

The user places the order. Placing checks the day still has room and is before close; if not, the user is sent back to the order and sees why.

from
Order → Checkout · $X.
to
Confirmed. Stale: Order. Card declined: stay here with the message. Leave: nothing placed; the order stays in progress.
/app/cook/:id · Both

The meal you are cooking. Its recipes, each a link.

The user sees the meal they are cooking: its name, time, and servings.

The user sees each recipe in the meal and can open it where it lives: the web page, or the photo they brought. Nothing is authored here; a recipe is always a link.

from
QR on the container or the printed sheet, Home or Order (in the fridge), the 5pm nudge. Opens without a session; the link is the key.
to
The recipe’s page or photo. Back: Home or Order. Leave: nothing changes.
/app/create · Both

Make a meal from your own recipes. It goes on your menu under My recipes.

The user makes a meal from one or more recipes. Each recipe stays where it lives; we read it.

The user can add a recipe by pasting a link or taking a photo. When we cannot read it, the user sees that on the recipe and the rest of the meal stands. When we cannot read how many it serves, the user is asked.

The user sees each recipe with what we read from it — how many ingredients, how many it serves — and whether anything is not stocked. The user can open a recipe and see each ingredient matched to something we stock; for each, the user can accept the match, swap it for something we do stock, or drop it. Nothing is authored.

The user can remove a recipe.

The user sees a name for the meal, made from the recipe names, and can change it.

The user sees the price for the order's servings, as a meal and as groceries. It moves as recipes and ingredients change.

The user can create the meal; it goes on their menu under My recipes, priced like a menu meal, and each recipe on it links back to its page or photo. The order sets the servings; the engine scales.

from
Menu (Create a meal). Carries the context.
to
Meal, carrying the context. Leave: nothing added.
/app/groceries · Both

Ferraro’s shelf. Search an item, set a quantity, it joins the order.

The user adds groceries to an order. There is no cart; the order is the cart.

The user sees which order this is for, and that prices are Ferraro's shelf prices.

The user can search by name.

The user sees what they have ordered before first, with its current quantity if it is already in this order, then everything else.

The user sees each item with its shelf price. The user can add one and step the quantity up or down; zero takes it out. Every change lands in the order straight away.

When an item can be portioned, the user can set an exact amount in grams or millilitres instead of whole packages, priced by weight from the shelf price. It is one or the other, not both.

from
Home or Order (a grocery row, or + Groceries). Carries the context.
to
Home or Order. Leave: nothing changes.
/app · Both

Your next pickup, what is in the fridge, and the containers to bring back.

The user sees the meals from the last pickup first, and can open one to cook it.

The user sees their next order: the pickup day, what is in it, and when it closes. The user can open it.

The user sees the containers out and the deposit held, and that they come back on the next trip.

The user sees each other order with its day, what is in it, and its state: open until it closes, closed, ready at the store, picked up. The user can open any order.

The user can start a new order and see past orders.

When the card has failed, the user sees that nothing can be placed until it is fixed.

from
After Get started, Sign in, Confirmed, Cook, or a notification.
to
Order (next, or any row), Order (building, from + New order), Cook, Containers, Past orders. Leave: nothing changes.
/ · Both

The public page. Where everyone starts.

The user sees the pitch: less waste, less money, less time. Shop by meal at Ferraro's.

The user can get started (→ Pick store), browse the menu with no order attached (→ Menu), or sign in.

from
Signage at the store, the card in a rental. A host link skips this and lands on Order.
to
Pick store. Menu (browse). Sign in.
/app/meal/:id · Both

One meal: the recipes, what is in them, what it costs, and the button to take it.

The user sees one meal: its name, time, and servings. The user can favourite it.

The user sees the recipes that make up the meal, and can open each where it lives: a web page, or the photo they brought.

The user sees each ingredient as the store item it comes from, the amount the recipe uses, and what that amount costs. The list is the saving, line by line.

The user can leave an ingredient out (already have it) or take the whole item instead of the portion. The line and the total move.

The user sees the price the same way as on Order: the shelf price, what portioning saves, prepped as an add-on, and the total.

What the user can do depends on where they came from:

  • From Menu: the user adds it to the order.
  • From Order: the user can remove it.
  • Browsing from Landing: the user can start an order with it.

A markdown meal shows it is same-day pickup and what is marked down.

from
A meal row on Home or Order, Menu, or Create a meal after confirm. Carries the context.
to
Order (after adding or removing), Menu, or Pick store (carrying the meal). Leave: nothing changes.
/app/menu · Both

The store's meals, the markdowns, and the ones made from recipes you brought.

The user picks a meal for an order.

The user sees which order it is for and how many servings.

The user sees markdown meals first: stock about to turn, same-day pickup, with what is marked down.

The user can search by name, and filter to favourites, meals had before, or their own recipes, in any combination.

The user sees each meal with its time, whether it is a favourite, its price and what it saves — or that it is already in the order. The user can open a meal.

The user can create a meal from their own recipes (→ Create a meal).

When nothing matches, the user sees that, and can still create a meal.

Favouriting happens on the meal itself.

from
Home or Order (+ Meal), Landing (browse); carries the context.
to
Meal or Create a meal, carrying the context. Leave: back to where it came from, nothing chosen.
/app/order/:id · Both

One order, in whatever state it is in.

The user sees one order: its pickup or delivery day, how many people, and when it closes: two days before pickup with a prepped meal, half a day before without.

The user sees each meal and its price. Portioned shows what it saves against the same ingredients as packages; ready to cook shows what it adds. The user can toggle a meal between the two on its row, and can open a meal.

The user sees what the order saves against packages.

A markdown meal is same-day pickup and does not close.

The user sees each grocery with its quantity and line price, and can open it.

The user can add a meal (→ Menu) or add groceries (→ Groceries).

The user can check out: pick a day, pickup or delivery (→ Checkout). Nothing is charged; the card on file holds the container deposit and covers a no-show. When the order is placed, the user sees that. If the user changes anything before it closes, it is placed again.

When the order is closed, the user can only look. On the day, the user sees it is ready at the store, or on its way. Once picked up or delivered, the user sees the deposit held until the containers come back, and can open a meal to cook it.

from
Home (+ New order, or any order row), a host link (delivery and the address already set), the order link sent at Confirmed and on the day, Menu or Groceries or Meal after adding, Cook.
to
Menu, Groceries, Meal, Checkout, Cook, Home. Leave: a building order stays in progress.

Open