RestoHub User Guide
Complete edition, illustrated step by step Β· Verified against the current RestoHub v1.0.0 build Β· Last updated: August 20, 2026
This guide covers every screen and function of the RestoHub app in detail, step by step, with screenshots at every important point. It's written for restaurant owners, chefs, and managers who want to control ingredient cost and track sales systematically β no technical background required.
Table of contents
1. What RestoHub is
RestoHub is an inventory and food-cost management app for a single restaurant, cafΓ©, or street food stall. It's built around three principles that set it apart from typical restaurant management apps on the market:
- 100% offline β no internet connection required for any core function. All data stays on your own device.
- No accounts, no login β open the app and start using it immediately, no sign-up, no email verification.
- No monthly subscription β a one-time purchase (or free, depending on the final pricing model), with no ongoing cost, unlike most competitors, which typically charge $200+/month.
RestoHub supports 8 languages: Thai, English, Chinese, Japanese, Vietnamese, Malay, Filipino, Indonesian β switch anytime in Settings.
What RestoHub can do
| Area | Core capability |
|---|---|
| Inventory | Batch-level tracking with expiry dates, automatic FEFO rotation, low-stock/expiry alerts, barcode scanning, whole-store stocktake |
| Recipes/costing | Real-time cost per serving, sub-recipes, theoretical vs. actual cost comparison |
| Sales | Record sales with automatic stock deduction per recipe, sale history with date filtering |
| Suppliers/purchasing | Manage supplier list, full purchase order cycle (draft β ordered β received) |
| Analytics | Gross profit, waste cost, sales mix, top sellers, exportable PDF reports with charts |
| Other | Backup/restore, dark mode, daily alert notifications |
Who should use this app
Owners of a single small-to-mid-size restaurant who want serious control over ingredient cost without carrying a monthly software cost β not a great fit for a multi-location chain wanting centralized data (RestoHub deliberately keeps data per-device).
2. First-time setup
Step 1 β Choose a language
On first launch you'll see a "Choose your language" screen listing all 8 languages by their own native name (e.g. "ΰΉΰΈΰΈ’", "ζ₯ζ¬θͺ", "TiαΊΏng Viα»t"), so you can find yours even if the app is currently showing a different language.
- The app automatically detects your device's language and pre-selects it (if it's one of the 8 supported languages).
- Tap any other language to switch immediately β the screen updates right away, no restart needed.
- Tap "Continue" to move to the next step.
Step 2 β Onboarding
After choosing a language, you'll see a 4-screen introduction:
- Swipe left/right through each screen, or tap "Skip" to jump straight into the app.
- Each screen introduces a core concept: inventory management, recipes/costing, recording sales, and the "offline, no subscription" idea.
- Tap "Get started" on the last screen to enter the app.
This screen only appears once β after you tap "Get started" it won't show again on future launches (unless all app data is cleared).
Step 3 β Reaching the home screen
After the two steps above, the app takes you to the Home (Dashboard) screen, which you'll land on every time you open the app from then on.
3. Home (Dashboard)
The first tab in the bottom navigation bar (grid icon) β today's overview of your restaurant.

3.1 Header
The RestoHub logo with a greeting that changes with the time of day (e.g. "Good morning", "Working late") and today's date.
3.2 Stat cards (4 groups)
- Remaining stock value β the total value of all ingredients still in inventory, calculated from each batch's real cost. Tap to go to Inventory.
- Today's sales β today's total sales, with a small sparkline showing the last 7 days' trend. Tap to go to Analytics.
- Today's gross profit β sales minus actual ingredient cost for today (labor, rent, and other expenses aren't deducted). Tap to go to Analytics.
- Low-stock / expiring soon (two paired cards) β the number of items needing attention. The card gets a tinted background when there's something to review. Tap to go to Alerts.
3.3 Quick actions
- Inventory β the primary green button, takes you to the ingredient list.
- Record a sale β the secondary button, takes you straight to the sale recording screen.
3.4 "Needs attention today"
A summary of low-stock or soon-to-expire ingredients (up to 3 per type). Each item is tappable, going straight to that ingredient's detail page. If there are more than shown, a "View all (N)" link takes you to the full Alerts screen. If nothing needs attention, a positive "Everything looks good, nothing to review" message appears with a green checkmark.
3.5 Pull to refresh
Pull down from the top of the screen to refresh all data on this page instantly (useful after recording a sale or adjusting stock from another device, or after restoring data).
4. Inventory
The second tab (fridge/box icon) β the app's core.

4.1 Ingredient list
Shows all ingredients grouped by category (e.g. vegetables, meat, condiments) with a count per category. Each row shows the ingredient name, category, unit, remaining quantity, with a color bar showing stock level (green = normal, amber = watch, red = low) β the same color scheme is used consistently across the list, the detail page, and the Alerts screen.
What you can do on this screen:
- Search box β type an ingredient name to filter instantly, with a Γ button to clear it.
- Category filter chips β tap to view only the category you're interested in.
- Sort button β by name, or lowest stock first.
- Swipe left to archive β discontinued ingredients aren't deleted permanently, just hidden from the normal view.
- Bell icon β carries a badge showing the total alert count; tap to go to Alerts.
- Barcode scan icon β opens the camera to find an existing ingredient, or pre-fill a barcode for a new one.
- "Manage" menu (three dots) β access 3 additional functions: Stocktake, Movement history, Suppliers and purchase orders.
- + button (bottom right) β add a new ingredient.
4.2 How to add a new ingredient β step by step

- Tap the + button at the bottom right of the Inventory screen.
- Type the ingredient name β autocomplete suggests from a database of 7,000+ common ingredients per language (across all supported languages, not tied to the app's currently displayed language).
- Type or pick a category β also autocompleted, from both a standard list and categories your restaurant has already used.
- Pick a unit from the standard list (kg, g, L, mL, pcs, etc.).
- Enter a low-stock threshold (Min Stock) β when remaining stock drops below this, the system alerts you. Set it to 0 to turn off low-stock alerts for that specific ingredient.
- (Optional) Tap to expand "Additional options" to enter a reference cost per unit, a barcode, and allergens (multi-select from 9 standard categories).
- Tap "Save".

If you're editing an ingredient that already has data in the advanced-options section, it expands automatically β no need to tap it open yourself. The system warns (but doesn't block) if the ingredient name duplicates an existing one.
4.3 Ingredient detail screen

Tap any ingredient in the list to reach this screen. It includes:
- Header card β icon, name, category, total remaining quantity, with the same status color bar as the list.
- Allergen badges (if any).
- Action buttons: Receive, Withdraw/Adjust, and "Produce" (the third button only appears once this ingredient has a sub-recipe set up).
- Batches β remaining batches, ordered by FEFO. The batch the system will draw from first under FEFO carries a clear green "Use first" tag. Each batch shows a remaining % bar, expiry date (if any), and that batch's per-unit cost.
- Movements β the most recent receive/withdraw/sale/adjustment entries for this ingredient.
- Receipt icon β appears once this ingredient is set up as a sub-recipe; tap to edit its recipe.
4.4 How to receive stock β step by step

- From the ingredient detail screen, tap "Receive".
- Enter the quantity received.
- (Optional) Tap to pick an expiry date from the calendar β worth entering every time for perishables, since FEFO needs this date to order batches correctly.
- (Optional) Enter that batch's per-unit cost β if left blank, the ingredient's reference cost is used instead for value calculations. As you type, the form shows a live running-total preview alongside a "current stock / threshold" line for context before you decide whether to order more.
- (Optional) Add a note.
- Tap "Save".
4.5 How to withdraw / adjust stock β step by step

Use this to log any stock movement that isn't a sale recorded through the Sales screen.
- From the ingredient detail screen, tap "Withdraw/Adjust".
- Pick one of 4 movement types: Withdraw (used in the kitchen without being tied to a sold menu item), Waste (spoiled/expired/dropped, kept visually distinct in reports), Adjust down, Adjust up (e.g. an actual count came in higher than the system).
- Enter the quantity.
- Add a note (worth doing every time, especially for waste, for later analysis).
- Tap "Save" β the system draws from batches per FEFO automatically for every type of withdrawal.
4.6 How to scan a barcode β step by step

- Tap the scan (barcode) icon from the Inventory screen.
- Allow camera access if prompted the first time.
- Point the camera so the barcode sits inside the on-screen frame β tap the flashlight icon if lighting is poor.
- The scan happens automatically: if an ingredient is already linked to this barcode, you're taken straight to its detail page; if not, you're offered a new ingredient with this barcode pre-filled.
4.7 How to set up and produce a sub-recipe β step by step
For ingredients your restaurant makes in-house from other ingredients β sauces, stocks, prepped components.

Part 1 β Set up the recipe (once per ingredient):
- Open the detail screen of the sub-recipe ingredient (e.g. "curry paste").
- Tap the receipt icon in the top right.
- Tap "Add ingredient to recipe".
- Pick a raw ingredient (searchable) and enter the quantity used per 1 production unit.
- Repeat steps 3β4 for every raw ingredient in the recipe.
- Tap "Save recipe".
Once the recipe is saved, the "Produce" button appears on that ingredient's detail screen immediately.
Part 2 β Produce (every time you actually make a batch):

- From the sub-recipe ingredient's detail page, tap "Produce".
- Enter the quantity you want to produce β the screen immediately shows a color-coded table comparing required vs. actual on-hand ingredients (red = insufficient, go receive more raw ingredients first).
- (Optional) Pick the expiry date for the produced batch and add a note.
- Tap "Save production" β the system draws raw ingredients from stock per FEFO, calculates the real cost from the batches actually used, and creates a new batch of the sub-recipe ingredient with its per-unit cost calculated automatically (not the fixed reference cost).
4.8 How to do a stocktake β step by step

Use this when you want to count the actual stock across the whole restaurant against what the system shows.
- From the Inventory screen, tap the "Manage" menu (three dots) β "Stocktake".
- (Optional) Use the search box to find ingredients faster when the list is long.
- Enter "What did you count?" only for the items you want to adjust (fields left blank aren't touched).
- Tap "Save" β the system automatically creates adjust-up/adjust-down entries based on the difference between your count and the system's number.
4.9 What FEFO is (First-Expired, First-Out)
RestoHub enforces the FEFO rule β the soonest-to-expire batch is always drawn first on every withdrawal, whether that's a manual withdrawal, recorded waste, a downward adjustment, or a sale. Batches with no expiry date set are drawn last (after every batch that does have one). This is why entering an expiry date on receipt is genuinely useful, not just tidy data-entry β it's what prevents stock from being forgotten at the back of the fridge.
5. Movement Ledger

Reached via "Manage" β "Movement history" on the Inventory screen. Shows the combined stock-movement history of every ingredient in one place (unlike the ingredient detail page, which only shows that one item's history). Each row carries an icon and color by type (receive/withdraw/waste/sale/adjustment).
How to export to CSV β step by step:
- (Optional) Tap the date-range filter to narrow the period.
- Tap the export icon in the top right.
- Pick a destination app from your OS's share sheet (e.g. email, Google Drive).
- The resulting CSV file opens directly in Excel/Google Sheets.
6. Menu
The third tab (fork/knife icon).

6.1 Menu list
Shows all menu items grouped by category (e.g. mains, desserts, drinks). Each row shows the name, sale price, and a green/amber/red food-cost percentage badge (green <30%, amber 30β35%, red >35%) β rows in the red zone get a light red-tinted background so they're easy to spot while scanning the list. Menu items without a recipe set up show a "No recipe yet" tag instead of a percentage.
What you can do on this screen: search box, sort (name/price/food-cost %), swipe left to archive, sale history icon, + button to add a new item.
6.2 How to add a new menu item β step by step
- Tap the + button at the bottom right.
- Type the menu item name (autocompleted from menu items your restaurant has already added).
- Type or pick a category (also autocompleted).
- Enter the sale price (with a ΰΈΏ symbol prefixing the field).
- Tap "Save" β you're taken straight to the recipe editor.
6.3 How to build a recipe and see its cost β step by step

The single most important screen for controlling cost.
- From the menu item's detail page, tap "Edit recipe".
- Tap "Add ingredient", pick an ingredient (searchable), and enter the quantity used per serving (unit conversion supported, e.g. gβkg, mLβL, for convenience of entry β the actual stored quantity is unaffected).
- Repeat step 2 for every ingredient in the recipe β the top of the screen shows "Cost per serving: ΰΈΏX (Y%)", updating instantly on every add/edit/delete.
- Check the combined allergen badge at the bottom (aggregated live from every ingredient with an allergen set, recalculated fresh every time you open this screen).
- Tap "Save recipe".
7. Sales
7.1 How to record a sale β step by step

- Reach this screen from the quick-action button on Home, or the icon on the Menu screen.
- Tap + next to a menu item to increase its quantity (rows with a quantity above 0 get highlighted, with that row's subtotal shown) β use β to decrease it.
- Repeat for every item on this bill β the bottom bar keeps a running total of item count and bill total the whole time.
- Tap "Record sale" β the system logs the sale, and automatically deducts the ingredients for every menu item's recipe via FEFO β no separate manual withdrawal needed.
If there isn't enough stock for a recipe, the system warns and won't let you record that sale (preventing sales you can't actually fulfill). A "Clear all" button appears in the top bar when items are pending in the cart, for a quick fresh start on the next bill.
7.2 Sale history

Shows all sales, with a 7-day / 30-day filter and a summary card of totals and bill count for the selected range. Each bill expands to show the menu items sold in it. The export icon exports the full sale history as CSV.
8. Alerts

Reached via the bell icon on Inventory, or the card on Home. Split into two sections:
- Low stock β ingredients below their configured threshold, showing remaining quantity against the threshold.
- Expiring soon β batches expiring within the number of days set in Settings (3 days by default), showing days remaining.
If both sections are empty, a single "Everything looks good" message appears. Each item is tappable, going straight to that ingredient's detail page.
9. Analytics
The fourth tab (bar chart icon) β the hub for business-decision-grade data.

9.1 Period selector
The top bar: Last 7 days, Last 30 days, This week, This month, and Custom (opens a date-range calendar picker). Every card/chart on this screen updates together with the selected period.
9.2 Gross profit
The first card shows gross profit = sales β actual ingredient cost, with a gross margin (%), sales and cost on separate lines, and a comparison against the equivalent previous period (e.g. this week vs. last week), shown as "up/down ΰΈΏX from the previous period" with green/red coloring by direction.
9.3 Ingredient trend chart β how to use it
- Pick a view via the 3-way toggle: Usage, Remaining stock, Top sellers.
- Tap the searchable ingredient picker to choose the ingredient you're interested in.
- View its daily trend over the selected period β tap a point on the chart to see that day's exact value.
9.4 Store-wide
- Theoretical vs. actual cost β compares what cost "should be" per your recipes against what actually happened from every logged record (withdrawals/sales/waste). An unusually large gap often signals over-portioning, unrecorded waste, or another kind of leak.
- Waste summary β the estimated waste value and item count for the selected period. If there's zero waste, a positive "No waste in this period" message appears instead of just showing nothing.
- Sales mix by category β a donut chart of revenue share by menu category.
9.5 Detailed Summary

Tap the table icon in the top right of Analytics to reach this screen β a full table of every ingredient (quantity used, actual cost) and every menu item (units sold, revenue, food cost, gross margin %) for the selected period, sorted highest value first.
9.6 How to export a PDF report β step by step
- From Analytics or Detailed Summary, tap the PDF icon in the top right (works on either screen).
- Wait a moment while the report is generated β the multi-page PDF includes an executive summary, daily sales trend, sales mix, gross profit / theoretical-vs-actual cost / waste, and a full detail table.
- Pick a destination app from your OS's share sheet to save or forward the file.
The report fully supports Thai and other Latin/Thai-script text. Ingredient/menu names typed in Chinese or Japanese may render as blank spaces specifically in the PDF file β this doesn't affect display within the app itself.
10. Suppliers and Purchasing
Reached via the "Manage" menu (three dots) on Inventory β "Suppliers and purchase orders" β not in the main bottom nav bar, since it's a secondary function not every restaurant uses.
10.1 Suppliers

A list of your ingredient suppliers, with phone number and notes (both optional). Has a search box and the same archive function as ingredients/menu items. Tap + to add a new supplier.
10.2 Purchase orders β the 3-status workflow, step by step

Status 1 β Draft:
- From the purchase order list, tap +.
- Pick a supplier.
- Add the ingredients you want to order, with the ordered quantity and expected per-unit cost (repeat for multiple items).
- Tap "Save draft" β freely editable in this status.
Status 2 β Ordered:

- Open the draft you created and tap "Mark ordered" once you've actually placed the order with your supplier β the order locks against further item edits, and the timeline records when it was ordered.
Status 3 β Received:

- When the delivery actually arrives, open the order and tap "Receive".
- Enter the actual quantity received and actual per-unit price for each item β it's these actual numbers, not what was originally ordered, that update real stock, since deliveries rarely match exactly what was ordered (short/over/different price than agreed).

- Tap "Confirm receipt" β a summary dialog shows quantity/unit per item for one more check before you finalize. Tap "Confirm" to update actual stock, or "Cancel" to go back and fix numbers first.
The purchase order list has status filter chips (All/Draft/Ordered/Received), each order shows a colored status badge, and the detail page shows a full timeline (created β ordered β received).
11. Settings
The fifth tab (gear icon) β last in the bottom nav bar.

11.1 Notifications
- Expiry lead time β adjustable 1β30 days, sets how many days before actual expiry a batch counts as "expiring soon".
- Low-stock alerts and expiry alerts β separate on/off switches controlling daily push notifications outside the app.
- Daily alert time β sets when you receive the push notification (08:00 by default).
11.2 Display
- Dark mode β an on/off switch, applied instantly across the whole app.
- Language β tap to open the language picker, with a special "System default" option that always follows your device's language automatically.
How to change language β step by step:
- From Settings, tap the "Language" row.
- Scroll through the 8 languages (each shown in its own native name).
- Tap the one you want β the app switches immediately across every screen, no restart needed.


11.3 Data
How to back up data β step by step:
- Tap "Back up data".
- Wait a moment while the backup file (the entire SQLite database) is created.
- Pick a destination app from your OS's share sheet β save to Google Drive, LINE, email, or anywhere you like.
How to restore data β step by step:
- Tap "Restore data".
- Pick a backup file from your device β the system always validates the file first, before touching any real data on your device.
- Once restored, tap the "Close app to finish restoring" button that appears immediately β you must fully close and reopen the app for the data to display correctly.
11.4 About
- How to use β opens the in-app help guide (see section 12).
- What's new β a plain-language update history (see section 12).
- Suggest a feature β opens your browser to a web page for submitting feature suggestions.
- App version info and logo.

12. In-app help and What's New
Besides this guide, the app itself has a built-in "How to use" screen (Settings β About β How to use), an expandable/collapsible reference (~15 topics) covering every function with the same terminology used in the app. Handy for a quick look while you're actually using it, without leaving the app to open this guide.

The "What's new" screen (Settings β About β What's new) shows a plain-language version history, newest first β useful after updating the app when you want to know what changed.

13. Tips for getting the most out of RestoHub
13.1 Enter an expiry date every time you receive a perishable
FEFO only works at full effectiveness when it has an expiry date to compare β batches with no expiry date are always drawn last, which can leave an undated old batch forgotten for an unusually long time.
13.2 Understand "reference cost" vs. "per-batch cost"
- Reference cost per unit (set on the ingredient edit page) drives theoretical numbers β food cost % in the recipe editor, for example. It's a single fixed value, not tied to any batch.
- Per-batch unit cost (entered on receipt) drives actual numbers β remaining stock value, waste value, and so on. Each batch can have a different price, matching what you actually paid.
Keeping these two separate is deliberate, not unnecessary complexity β it's what lets you see how far actual cost has drifted from what you planned.
13.3 Record waste every time it actually happens, even when it feels like a hassle
The "theoretical vs. actual cost" numbers in Analytics are only accurate when waste is recorded completely β if it isn't, the gap that should show up as "waste" gets lumped into "unexplained leakage" instead, making the real problem harder to diagnose.
13.4 Use the recipe editor's +/β buttons deliberately
Every time you adjust a recipe, the food cost % on the Menu screen updates instantly β use this screen to trial recipe changes before committing to them in the actual kitchen, since nothing affects stock until that menu item is actually sold.
13.5 Back up regularly, especially before restoring or switching devices
Because data lives only on the device (there's no automatic cloud backup), back up manually on a regular basis (e.g. weekly) and keep the file somewhere safe off-device.
14. FAQ
Q: How many devices can I use RestoHub on? Does data sync?
A: RestoHub deliberately keeps data per-device (no central server). To move data to another device, use the backup/restore feature (11.3) β it doesn't sync in real time between two devices used at the same time.
Q: Can I delete an ingredient or menu item?
A: There's no permanent delete β use "Archive" instead, which hides the item from normal view while keeping its full related history (sales, past stock movements) intact, so historical reports stay accurate.
Q: Why can't I record a sale for a certain menu item?
A: Usually because that item's recipe needs more of an ingredient than is currently in stock. The system always warns before you'd otherwise record it β check the relevant ingredient's stock, or receive more first.
Q: What happens if I set the low-stock threshold to 0?
A: That ingredient will never appear in the "low stock" list again, no matter how little remains β useful for ingredients you don't need to track strictly (e.g. a condiment that's always easy to buy more of).
Q: Why does the "food cost %" look different between the recipe screen and the menu list?
A: Both are always calculated from the same recipe and should match. If they don't, try pulling down to refresh (especially if you just edited an ingredient or recipe on another screen).
Q: If I switch languages, does the ingredient data I entered disappear?
A: No. Ingredient/menu names you typed yourself are free text, not tied to the app's language. Switching languages only affects labels, menus, and autocomplete suggestions.
15. Troubleshooting
| Problem | Fix |
|---|---|
| App freezes or the screen doesn't respond after tapping Save | Wait a moment (it may be processing). If it's still frozen, close and reopen the app β anything already saved successfully won't be lost. |
| Numbers on Home/Analytics look out of date | Pull down to refresh, or switch tabs away and back. |
| After restoring data, the screen still shows the old data | Fully close and reopen the app every time after a restore (not just navigating back to Home). |
| Barcode scanning isn't picking anything up | Check that camera permission is granted, and try the flashlight if lighting is poor. |
| Not receiving the daily push notification | Check 11.1 that the alert switches are on, and confirm your device's OS isn't blocking notifications for this app (a system setting, not an in-app one). |
| Exporting PDF/CSV shows no app to share to | Make sure your device has an app installed that can receive that file type (e.g. email, Google Drive). |
If a problem persists after trying the above, use "Suggest a feature" in Settings to reach the dev team, or email scp.plus.softwarehouse@gmail.com
16. Privacy and data security
RestoHub does not collect, transmit, or share your data anywhere β everything stays on your own device. There's no user account system, no usage tracking, no ads. Read the full details in the privacy policy.