NOVUS / RESTAURANT

Documentation

Your menu list, and what costing needs from it

The four fields a menu entry holds, why a plate cost stays withheld until price and currency agree, and why your menu is never matched against a competitor menu.

Last reviewed against the product on .

The menu page holds the list of dishes you sell. Each entry carries four fields and nothing else, and every recipe on this site hangs off one of them.

What one entry holds

What a menu entry accepts
FieldRequiredWhat is checked
NameYesTrimmed, between two and 120 characters
DescriptionNoTrimmed, up to 1,000 characters
PriceNoA number of zero or more
CurrencyNoExactly three characters, stored in upper case

Measured from the add-item validation in app/app/menu/actions.ts.

Only the name is required, so an entry can exist with no price at all. That is deliberate: a dish you have not priced yet is still a dish, and the list is more useful complete than tidy.

Price and currency decide whether costing can finish

A plate cost is only shown when it can be compared with something. The comparison is against the price on the entry, in the currency on the entry, so both have to be there.

What has to be true before a food cost appears
RequirementWhere it is set
A price on the entryThis page
A currency on the entryThis page
Every ingredient matched to an imported purchaseMenu costing
All ingredient costs in one currencyYour imported files
That currency is the one on the entryBoth

Measured from the comparable-total check in app/app/menu-costing/page.tsx.

Miss any one of these and the dish still appears, with its ingredients listed and its total withheld. The page says so rather than showing a partial figure, because a plate cost missing one ingredient looks exactly like a plate cost.

Nothing here edits or removes an entry

The page has one form and that form inserts. There is no edit control and no delete control, so a misspelled name is corrected by adding a second entry and living with the first. Nothing stops two entries sharing a name either.

Where the recipes live

Recipes are not on this page. They are built in menu costing, one ingredient at a time against the item names your supplier files carried. The walkthrough is cost a recipe from a supplier invoice.

What this page does not tell you

There is also no course or category, no ordering beyond newest first, no availability or seasonal dates, and no portion or serving size. Cost and margin are not here at all. The currency is checked for length and nothing more, so three characters that are not a real currency code are accepted exactly as typed, and everything downstream treats them as a currency of their own.

Next: cost a recipe from a supplier invoice.