Mirari Restaurant ERP

Designed and built end to end, solo2024 — 2026
Recipe CostingDaily P&LSpoilageInstalls on a Tablet
The accounts screen: total sales, other income, total expenses and net profit, with the daily sales table below

Overview

A restaurant runs on a dozen small ledgers: what was bought, what was thrown away, what was sold each day, who came to work, which bills are paid. Mirari kept them in notebooks, a spreadsheet and WhatsApp. This system puts them in one app that installs on the tablet at the counter, with each person seeing only the modules their job needs.

At a Glance

6

Modules

6

Roles

4

Access Levels

2026

Last Module Shipped

Key Features

01

Purchase orders from pending to paid

Every order to a supplier is one row: what was ordered, when it arrives, whether it has been approved, delivered and paid. The owner sees at a glance what is still owed to whom.

The purchase orders list: PO number, date, vendor, amount, order status and payment status, newest first
02

Stock on the shelf

Every item shows what is on the shelf, what is still to arrive, what it is worth at the last rate, and when it was last bought. Items below their reorder level are flagged on the purchases screen.

The inventory list: item, category, rate, opening and closing stock, pending stock, value on the shelf and the last purchase date
03

Vendors by category

Meat, dairy, vegetables, fruit, bakery. Each vendor carries a contact and a phone number, and every item in stock knows which vendor it comes from, so a reorder starts from the item.

The vendors list: code, name, contact person, address, category and phone
04

Spoilage, logged against the item

What was thrown away, how much, and why: expired, temperature failure, pest, poor quality received. Each entry is priced at the item's rate, so the purchases screen shows what spoilage cost this month.

The spoilage list: item, category, quantity, amount lost, date and reason
05

One sales entry a day

Dine-in food, beverage and liquor, takeaway, delivery, and the number of covers. The average spend per cover comes out of it. Other income and expenses by type go in beside it.

The daily sales table: date, dine-in sale, covers, average cover, online, takeaway and total
06

Profit and loss for any date range

Pick two dates and the report shows income, expense and the profit between them, day by day. The dips on the chart are the days the rent and the salaries went out.

The profit and loss report: total income, total expense and net profit for the range, with the daily trend chart
07

Money in, money out

The same range as cashflow: what came in and what went out each day, and the net. Both reports export as a spreadsheet for the accountant, and sales, income and expenses import from one.

The cashflow report: total money in, total money out and net cashflow, with the daily trend chart
08

Recipes costed to the ingredient

Each recipe lists its ingredients at the rate the restaurant last paid, so the dish has a cost, a selling price and a margin. Change a supplier's rate and every dish that uses the item moves with it.

A recipe: difficulty, cost price, selling price and margin, then servings, times, nutrition and the ingredient list with rates
09

Preparing a dish checks the stock first

The chef enters how many servings. The screen shows what each ingredient needs against what is on the shelf, and refuses when something has run out. Preparing deducts the ingredients from stock.

The prepare screen for a recipe: servings, each ingredient's required and available quantity, and a red row where stock has run out
10

Utility bills that post themselves

Electricity, gas, water, rent, internet, phone, waste. Recurring bills come back every month with one click. An unpaid bill past its due date shows as overdue without anyone marking it.

The utility bills screen: outstanding balance, billed this month, overdue count, status breakdown and the bills list
11

A bill paid in parts

A bill can be paid in two or three instalments. Every payment lands in the accounts as an expense by itself, on the day it was paid, so the month's profit never misses a bill. Reverse a payment and the expense goes with it.

One electricity bill: amount, paid, balance, a payment progress bar at 50 percent, the bill details and the payment history
12

Staff by department

Kitchen, service, bar, cleaning, management. Each person has a role, a joining date and the pay details, and the HR screen totals the monthly payroll.

The employees list: ID, name, email, department, role and status
13

Attendance, one record per person per day

Present, absent, leave or half day, with the hours. The register is keyed on the person and the day, so the month cannot count anyone twice.

The attendance list: date, name, department, status as present, leave, absent or half day, and hours
14

Six roles, four levels

Admin, manager, HR, accountant, chef and purchase manager. Each role gets full, edit, view or no access to each module, and the admin can change it for one person without changing the role.

The settings screen: user counts, and the users list with role and status
15

Installs like an app

Runs in the browser on a tablet or phone and installs to the home screen. On a phone the modules sit in a bar at the bottom of the screen. If the connection drops mid-form, the screen says so instead of going blank.

The purchases screen on a phone, with the module bar at the bottom

System Architecture

One Next.js application on Vercel with DynamoDB on AWS. Every screen action runs on the server and starts with a permission check for its module, and the pages check before they fetch, so a role without access never receives the data. Utility payments and the accounts ledger are linked both ways: reversing a payment or deleting a bill removes the expense it created.

01

Login & Permissions

02

Purchases & Inventory

03

Spoilage

04

Accounts & Reports

05

CSV Import & Export

06

Recipes

07

HR & Attendance

08

Utility Bills

09

Settings

Technical Highlights

Six roles by four access levels per module, with per-user overrides seeded from the role; every server action guards itself and the navigation only shows what the user can open

Attendance is keyed on employee and day, and utility bills carry a duplicate-period guard, so neither ledger can record the same thing twice

Each utility payment auto-posts a linked expense into the accounts and is reversible from either side

A progressive web app with a home-screen install; the forms catch a lost connection and tell the user instead of failing silently

Next Step

Running an operation like this?

If you're wrestling with the same kind of complexity — multi-branch inventory, formulations, approval workflows — tell me about it. I'll respond within 24 hours with an honest assessment.

Start a conversation