BOM Menu Builder
Build recipes from real ingredients. Each menu item tracks its bill of materials — milk, espresso shots, syrups — so cost price is calculated automatically and stock deducts on every sale.
Tablet-first. Open source. MIT licensed.
RoastPOS handles the full cashier workflow — from live menu display and modifier selection through to stock deduction and receipt generation — with a management portal for configuring inventory, pricing, team access, and reporting. Free to self-host, forever.
No cloud dependency, no transaction fees, no vendor lock-in. Install it on your own server and own your sales data completely.
Built specifically for small hospitality operators who need a capable POS without the enterprise price tag or opaque SaaS pricing.
Core features
RoastPOS was designed from the ground up for the pace of a counter service venue — fast ordering, precise stock tracking, and a back-office that doesn't slow you down.
Build recipes from real ingredients. Each menu item tracks its bill of materials — milk, espresso shots, syrups — so cost price is calculated automatically and stock deducts on every sale.
Add size and extras modifiers with price deltas and ingredient overrides. A Large Flat White can use 450 ml milk instead of 350 ml without duplicating the recipe.
Every confirmed sale instantly deducts the correct ingredient quantities per location. Low-stock alerts and reorder levels keep your pantry from running dry mid-service.
Run one organisation across multiple locations. Each location has its own stock levels, till sessions, and cashier access — managed centrally from a single portal.
Owner, Admin, Manager, and Cashier roles control exactly who can access the portal, manage the team, or open a till. Cashiers only see the POS terminal for their assigned locations.
Review sales by payment type and date range. Till sessions track opening floats, closing cash, and variance so reconciliation is fast and evidence-backed.
Accurate costing
Most POS systems treat menu items as flat prices. RoastPOS uses a bill of materials model — each item is composed of real inventory ingredients with real unit costs. Adjust a supplier's milk price and every menu item's cost updates automatically.
Designed for counter service
RoastPOS is built to be practical to deploy. Clone the repo, configure your environment, seed the demo data, and you'll have a working POS terminal before your coffee brews.
Get started
Clone the GitHub repo, create a Python virtual environment, and pip install -r requirements.txt. Node.js is optional — only needed to rebuild CSS.
Add a .env file with your SECRET_KEY. Run python manage.py migrate to create the schema. Works out of the box with SQLite.
Run python manage.py seed_demo_pos for a complete demo workspace: organisation, location, owner account, full menu with BOM recipes, and stock levels.
Open the POS terminal at /pos/<org-slug>/, log in as a cashier, and start ringing up flat whites. The portal at /portal/ gives full management access.
Flexible payments
RoastPOS records payment type against every order and rolls it up in sales reports. Accept however your customers pay without any third-party integration or transaction fee.
Record the exact payment method for every sale. Till sessions track cash float, closing balance, and variance automatically — so cash-up at end of day is a single-screen process.
Each cashier shift is wrapped in a till session. RoastPOS calculates expected cash from opening float plus cash sales, then tracks the variance when you close out — no spreadsheet required.
Open source, always
RoastPOS is built in the open and released under the MIT licence. Read the code, modify it for your venue, contribute improvements, or fork it entirely — no permissions needed and no licencing fees ever.
Who it's for
RoastPOS is a solid fit when you run a coffee shop, café, or pastry counter and want a tablet POS that tracks stock properly, manages a small team, and doesn't come with a subscription attached. Deploy it on a cheap VPS or Raspberry Pi — it's just a Django app.