Tablet-first. Open source. MIT licensed.

The POS built for independent coffee shops.

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.

What it is A self-hosted tablet POS system
Built for Coffee shops, cafés & pastry counters
Licence MIT — free to use & modify

What RoastPOS does

A complete POS terminal and management portal, all in one open-source project.

From pulling shots to printing receipts — RoastPOS covers the cashier flow, stock management, and back-office reporting in a single self-hosted Django application. No subscription. No lock-in.

Why self-host it Your data stays with you

No cloud dependency, no transaction fees, no vendor lock-in. Install it on your own server and own your sales data completely.

Best fit Independent venues with 1–5 locations

Built specifically for small hospitality operators who need a capable POS without the enterprise price tag or opaque SaaS pricing.

Core features

Everything a busy coffee shop needs, nothing it doesn't.

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.

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.

⚙️

Modifier Groups

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.

📦

Real-time Stock Tracking

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.

🏪

Multi-location Support

Run one organisation across multiple locations. Each location has its own stock levels, till sessions, and cashier access — managed centrally from a single portal.

👥

Role-based Access

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.

📊

Sales Reports

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

Recipes that actually reflect what you pour.

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.

  • Define inventory items with unit costs and reorder levels
  • Build BOM recipes from those ingredients
  • Markup multiplier computes selling price from cost
  • Modifier overrides handle size-based recipe variations
  • Stock is deducted ingredient-by-ingredient on every sale
Define Inventory Items
assign to recipes
Build BOM Menu Items
add size & extras
Attach Modifier Groups
sale confirmed
Stock Deducted Instantly

Designed for counter service

From first login to your first sale in minutes.

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.

Backend Django 5.x
Frontend HTMX + Alpine
Styling Tailwind CSS

Get started

Four steps to a live POS terminal.

Step 1 Clone & Install

Clone the GitHub repo, create a Python virtual environment, and pip install -r requirements.txt. Node.js is optional — only needed to rebuild CSS.

Step 2 Configure & Migrate

Add a .env file with your SECRET_KEY. Run python manage.py migrate to create the schema. Works out of the box with SQLite.

Step 3 Seed Demo Data

Run python manage.py seed_demo_pos for a complete demo workspace: organisation, location, owner account, full menu with BOM recipes, and stock levels.

Step 4 Start Taking Orders

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

Accept cash, card, and more — no payment gateway required.

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.

Payment types

Cash, Card, Bank Transfer & Other

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.

  • Cash with opening float and closing reconciliation
  • Card payments recorded without a gateway
  • Bank transfer and custom payment types supported
  • Per-payment-type breakdown in sales reports
Till sessions

Open and Close the Till With Confidence

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.

  • Per-location till session management
  • Opening float recorded at session start
  • Automatic expected cash calculation
  • Cash variance captured on close with notes

Open source, always

Full source code. MIT licence. No strings attached.

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.

Licence MIT
Source GitHub
Hosting Self-hosted

Who it's for

Independent venues that want a real POS without a monthly bill

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.

Support the project

Love RoastPOS? Buy the developer a coffee.

RoastPOS is free and open-source. If it's useful for your venue, consider supporting continued development with a small donation.

Naughty Bean Coffee logo Buy Me A Naughty Bean Coffee