The front of Pavilion: a fantasy tavern with a tall timbered gable over a bay window, a thick thatched roof, an open-sided bar under a thatched lean-to, a small gabled annex, an outdoor oven with a fire, and the Pavilion emblem on a hanging banner. Hamlet

Pavilion

A Hamlet building

Restaurant software that runs the whole place.

The till, the kitchen, the online store, the couriers, the TVs on the wall and the music in the dining room. Pavilion is one app you host yourself, so it replaces the stack of subscriptions a small restaurant usually pays for, and your orders and customers stay yours.

  • Free and open source
  • Self-hosted
  • Built for touch screens
  • Live on every screen
The online store on a phone: the home page of a restaurant called Corner Kitchen with Order for pickup and Get it delivered buttons.
The online store's menu on a phone, with dish cards for a smash burger and a crispy chicken sandwich.
The staff launcher: a clock, who is signed in, today's numbers for this device, and tiles for Register, Order marking, Cookery, Availability, Cash drawer, Deliveries, Screens, Audio, Time clock, My profile and Admin.
The staff launcher ties every app together

The screenshots on this page show the demo restaurant that ships with Pavilion, Corner Kitchen.

The till

A real point of sale for the counter, built for fingers and busy hands.

Register 1 · what it does

  • Touch-first register

    Sections follow your stations. Tap a dish to add it, swipe a line to discount, customize or remove it.

  • Combos and modifiers

    Combos walk the cashier through each choice. Dishes take options, add-ons, substitutions and things to leave off.

  • PIN sign-in

    Staff pick their name and type a 4-digit PIN. Five wrong tries locks that person out for a minute.

  • Card on a Square Terminal

    Each register pairs its own Terminal. No Terminal? The register shows a QR code and the customer pays on their own phone.

  • Cash, gift cards, split payments

    Take part of a bill one way and the rest another. Gift cards scan by camera or reader.

  • A proper cash drawer

    Open with a float, record paid in and out, and close by counting. The expected amount stays hidden until you have counted.

  • History, receipts and refunds

    Find any order, reprint or send its receipt, and refund the whole order or picked items.

  • Discounts need a manager

    Typed-in discounts need a manager's PIN. Cashiers can ask for one without leaving the order.

The register: dish tiles by station on the left, and on the right an order for Maya with a smash burger, a crispy chicken sandwich, charred corn and drinks, totalling $48.14.
Ring up an order
A combo picker on the register asking the cashier to choose a main for a lunch combo, step 1 of 3.
Combos ask the right questions
The register's payment screen with Card chosen: the amount due and a prompt to charge the paired Square Terminal.
Pay by card, cash or gift card
The register's lock screen: three staff names to pick from and a keypad for a 4-digit PIN.
Sign in with a PIN
The cash drawer screen: a keypad to enter the starting float before opening the drawer.
Open and count the drawer
Order history: today's orders with payment and status, and one order's receipt with Print receipt, Send and Refund.
History, receipts and refunds

The pass

The kitchen display. Tickets hang here until the food goes out.

  • One screen per station

    Every dish goes to the station that makes it: grill, bar, pastry, whatever you set up. Each screen shows only its own part of an order.

  • Green, amber, red

    Tickets change colour as they run past the station's target time, so the late ones stand out from across the kitchen.

  • Touch, mouse or keyboard

    Tap a ticket, click it, or run the whole screen from a keyboard alone. Every action shows its shortcut, and it works on a TV mounted in portrait.

  • Confirm, ready, handed out

    Each station confirms and marks its part ready. When every station is done the order is ready for pickup.

  • Reject with a reason

    Rejecting an online order voids or refunds the payment and tells the customer why.

  • Allergies stand out

    Allergy notes show as red flags with a banner on the ticket. Modifiers are coloured by kind: left out, extra, option.

The kitchen display for all stations: an open ticket for Mark that is ready for pickup and running late in red, and tickets in progress below in green and amber.
Order marking, with late tickets in red
The admin's Stations page: Grill, Bar, Bakery and Grab and Go, each with an icon, a colour, a ticket code and a target ticket time.
Set up your own stations

The pantry

Real inventory and costing, from the delivery door to the plate.

  • Ingredients, components, dishes

    Buy ingredients, cook them into components, and build dishes from components. Everything downstream follows from that chain.

  • Costs and allergens work themselves out

    Food cost, allergens and diet flags come from the ingredients you buy. Nobody types them in by hand.

  • Cookery

    Cooks follow a recipe step by step with timers, scale the batch, and record what it made. Batches in progress show for the whole shift.

  • Freeze and thaw

    Transforms move a component from one state to another, like fresh patties to frozen and back.

  • Run out, and it comes off the menu

    When a part runs out the dish shows as sold out on the register, the online store and the menu boards. Set any item to Off, Auto or Always.

  • Restocks and suppliers

    Draft purchase orders when stock drops under par, log deliveries with their receipts, and see which prices went up.

Cookery: three batches in progress along the top, and component cards below showing how much is on hand against par.
Cookery: what to make next
A recipe for brioche buns: batch size, ingredients taken out of inventory, five steps with timers, and a Start guided cooking button.
A recipe, step by step
The Transform screen with cards for freezing and thawing patties, pierogi and pulled pork.
Freeze and thaw
The Availability screen: every dish with how many can still be made and a switch for Off, Auto or Always.
Availability: off, auto or always
The admin's Ingredients page: cost, diet flags and stock on hand against par for each ingredient, grouped by kind.
Ingredients with cost and stock
The admin's Restocks page: money on the way, spend in the last 30 days, price changes, and purchase orders by supplier.
Restocks and price changes

The front window

Your own online store. No marketplace, and no cut of every sale.

  • Pickup and delivery

    Customers order from your menus, pick a time, and pay by card. Hours, cutoffs and a pause button are enforced on the server.

  • It installs as an app

    The store is a PWA. Customers add it to their home screen and get push notifications as their order moves along.

  • Accounts worth having

    Order history, one-tap reorder, receipts, saved cards and addresses.

  • Follow the order

    A live tracking page shows received, cooking, on the way and delivered, with an arrival time.

  • Your colours, your words

    Every page is drawn by a theme. Edit colours, fonts, images and sections in the admin and preview before you publish.

  • More than the menu

    Gift cards, catering quotes, events, and services like rooms and staff sit alongside the food.

Store themes

Work in progress

Today there is one built-in theme, Neighbourhood. The plan is for designers to publish themes that any store can install. Sharing and installing themes is still being built.

The online store's home page for Corner Kitchen: a headline, Order for pickup and Get it delivered buttons, and illustrations of a grain bowl, fries and an iced coffee.
The store your customers see
The store's menu page: Grill dishes as cards with drawings and prices, and an order summary on the right.
Browse the menu
A dish sheet for a smash burger with choices for bun, add-ons, patty temperature and things to leave off.
Make it how you like it
An order tracking page that says It's coming, with steps for received, cooking, on the way and delivered, an arrival time and the receipt.
Track an order live
A customer's account: an order that is cooking now, past orders, and one order's receipt with Reorder these items.
Order history and reorder
The admin's Online store page: settings for the Neighbourhood theme on the left and a live preview of the store on the right.
Edit the theme with a live preview
The admin's Store hours page: weekly hours by day, whether the store is open right now, a pause for online orders, and order cutoffs.
Hours, cutoffs and pause

The back door

A courier app for your own drivers.

  1. Start a shift

    Couriers sign in on their phone and say how they are travelling: on foot, by bike or by car.

  2. Accept or pass

    New deliveries go to couriers first. The kitchen only sees a delivery order once someone has taken it.

  3. Follow the steps

    Pick up, head out, arrive. Each step updates the customer's tracking page.

  4. Snap a proof photo

    A photo at the door closes the delivery.

Travel times come from your own OpenStreetMap routing, using Valhalla and Nominatim, so there is no maps bill. The courier app installs on a phone and uses web push for new deliveries.

The courier app on a phone: on shift and cycling, with two orders looking for a courier, each with distance, items and how long ago it was placed.
Orders looking for a courier
A delivery order in the courier app: a map, travel times on foot, by bike and by car, the address and a delivery note, with Pass and Accept delivery buttons.
Accept or pass
The customer's tracking page on a phone, showing the order received and cooking with an arrival time.
What the customer sees

The walls

Every TV in the building, laid out by you.

  • A screen builder

    Lay widgets out on a grid: order lists, weather, clocks, QR codes, promo slides, the song that is playing, and an order-ready pop-up.

  • Ten menu-board templates

    Five for landscape TVs and five for portrait. Pick a menu, pick a template, and choose what to feature. Sold-out dishes update on the board by themselves.

  • Plug in a Raspberry Pi

    A small computer behind the TV pairs with a six-digit code and shows whichever screen you pick from the admin.

  • Landscape or portrait

    Every screen is built for one or the other, and staff screens work both ways.

An order board on a landscape TV: orders being prepared, one ready for pickup, a promo for a lunch combo, the clock and the song that is playing.
An order board, built from widgets
A pickup board on a portrait TV: orders being prepared, one ready for pickup, the clock, the weather and a promo for a maple oat latte.
The same idea on a portrait TV
The screen builder in the admin: a preview of the order board and its layout tree of rows, columns and widgets.
The screen builder
The admin's Devices page: registered computers, visual dongles plugged into TVs, and kiosk links for the register, kitchen display and time clock.
Devices and TV dongles

Ten menu boards, one menu

The same lunch menu in every template. Five are made for a TV on its side and five for a TV hung upright. Change the menu once and every board follows.

For landscape TVs

  • The Neon menu-board template showing Corner Kitchen's lunch menu on a landscape screen.
    Neon
  • The Departures menu-board template showing Corner Kitchen's lunch menu on a landscape screen.
    Departures
  • The Letterboard menu-board template showing Corner Kitchen's lunch menu on a landscape screen.
    Letterboard
  • The Triptych menu-board template showing Corner Kitchen's lunch menu on a landscape screen.
    Triptych
  • The Carousel menu-board template showing Corner Kitchen's lunch menu on a landscape screen.
    Carousel

For portrait TVs

  • The Showcase menu-board template showing Corner Kitchen's lunch menu on a portrait screen.
    Showcase
  • The Chalkboard menu-board template showing Corner Kitchen's lunch menu on a portrait screen.
    Chalkboard
  • The Editorial menu-board template showing Corner Kitchen's lunch menu on a portrait screen.
    Editorial
  • The Grid menu-board template showing Corner Kitchen's lunch menu on a portrait screen.
    Grid
  • The Poster menu-board template showing Corner Kitchen's lunch menu on a portrait screen.
    Poster

The jukebox

Music for the room, and a way to talk across it.

  1. Your own music library

    Upload songs, sort them into playlists, and see what is missing tags.

  2. Radio-style channels

    Every screen on a channel plays the same song at the same moment, so the dining room and the patio stay in step or play different things.

  3. Push to talk

    Voice channels work like walkie-talkies between screens. Hold the button and speak.

  4. Order-ready calls

    Spoken announcements call out names when orders are ready, and the music ducks quietly underneath.

A music channel called Lobby music: the song playing now, playback controls and the queue.
A music channel
A voice channel called Order calls with a large Hold to talk button and a chime button.
Push to talk
The admin's music Library: all songs with album, playlists and length, and playlists down the side.
The music library

The banquet room

Catering, from the first quote to the last chafing dish.

  1. The customer builds a quote

    They pick dishes and services, a date, and pickup or delivery. Notice periods and minimums are checked as they go.

  2. You answer

    Accept it, or propose changes. The customer accepts or declines, and it can go back and forth.

  3. Every version is kept

    Nobody loses track of what was agreed. Both sides see the same history.

  4. Charged on acceptance

    The card on file is only charged once both sides agree.

  5. Deposits for equipment

    Holds for rented equipment are placed close to the event and released after.

Catering prices per dish

Set a minimum order and price breaks by quantity on any dish, and see the food cost at each break.

Services, not just food

Sell staffing by the hour, equipment rental by the day, a room, or a class. Customers add them to a catering request.

The store's catering quote builder: the rules for notice, minimums and dates, and a form for the event beside a running quote.
Customers build a quote
The admin's Catering page: a new request for a birthday with its date, contact, card on file and note, and buttons to reject, propose changes, or accept and charge.
Accept, or propose changes
The admin's Services page: staffing by the hour and equipment rental by the day, with how often each was booked.
Staff, equipment and rooms

The gift shelf

Gift cards, staff cards and discounts.

  • Gift cards

    Sell them on the register or online, with designs that come and go by season. Card numbers are never stored, only a hash and the last four digits.

  • Staff cards

    Give staff a card that refills itself on a schedule, like a shift meal, or one that takes a staff discount. They scan it at the register.

  • Offers and coupons

    Automatic offers, coupon codes, happy-hour windows and first-order deals, each with its own days, times and limits.

  • Rules that make sense

    Choose where a discount works: in store, pickup or delivery. Decide what stacks, and see how each one performed.

  • Know your regulars

    Customer profiles show lifetime spend, average order and what they usually get, with notes only staff see.

The store's gift card page: a classic card for $50, design choices, and a form to send it as a gift.
Buy a gift card online
The admin's Gift card designs page: designs like Classic, Birthday and Holiday, the amounts buyers pick from, and how each design sells.
Seasonal designs
The admin's Staff cards page: a shift meal card that refills every day, a staff discount card and a manager comp card, with a preview at the register.
Staff cards that refill themselves
The admin's Discounts page: a happy hour discount with the days and hours it runs, a checkout preview, and how often it was applied.
Discounts with days and hours

The staff room

Scheduling and a time clock for the whole team.

This week

  • Build the week's schedule by dragging shifts
  • Staffing pars say how many people each role needs, hour by hour
  • Staff set their availability and ask for time off
  • Shift swaps and giveaways go up for grabs
  • A PIN time clock runs on a shared tablet
  • Clocking in early needs a manager's OK
  • Roles describe the jobs; groups decide what each person can open
A staff member's Shifts page on a phone: the next shift today, hours scheduled this week, and upcoming shifts with Give away and Swap buttons.
Staff see their shifts on their phone
The admin's Shifts page: a week of days along the top, coverage by role and hour, open shifts, and each person's shifts on a timeline.
The schedule, with coverage by role
The Shift pars page for a Friday: how many cooks, cashiers, baristas and servers are needed in each hour.
Staffing pars, hour by hour
Availability requests: a time-off request with the shift it affects and choices for what to do with that shift.
Time off, availability and swaps
The time clock: who is on the clock, who is due in, and a keypad to clock in with a PIN.
The time clock
The admin's Groups page: the Managers group with switches for which apps it can open and which actions it can take.
Groups and permissions

The office

The back office: menus, money and everything you set once.

  • Dashboard and reports

    Net sales, orders, average order and ticket time, live. Reports by day, as a table, a calendar or a CSV.

  • Orders

    Every order with its timeline, payments and customer. Add a note, send a receipt, or refund.

  • Menus

    Several menus with schedules and priorities: breakfast, lunch, happy hour, specials. Choose how each one looks on a menu board.

  • Dishes and combos

    Prep time, the station it goes to, allergens, food cost against price, and what a combo saves the customer.

  • Store hours and events

    Weekly hours with breaks, one-off events that open or close the store, and announcements to go with them.

  • Payments

    Connect your own Square account from the admin. Each register pairs its own Terminal.

  • Email and notifications

    Receipts, order updates and gift cards go out through listmonk. Push notifications switch on or off by kind.

  • Devices

    Only registered devices can open the register and kitchen screens. Kiosk links make a tablet remember what it is for.

The admin dashboard: net sales, orders, average order and average ticket time for today, and a chart of sales by hour against last week.
The dashboard
Reports for the month: net sales, business days, average per day, best day, and a row for each day.
Reports by day
One order in the admin: its items by station, the total with a member discount and delivery fee, a timeline, and buttons to print or send the receipt or refund.
An order, start to finish
The admin's Dishes page: each dish with its picture, allergens, food cost percentage, price and whether it is available.
Dishes with food cost
The dish editor for a smash burger: price, kitchen ticket name, prep time, station, catering price breaks, availability and allergens worked out from its ingredients.
The dish editor
The menu editor's Display tab: a row of menu-board templates to pick from and a live preview of the board.
Pick a menu-board look
The admin's Customers page: a customer's contact details, staff notes, lifetime spend, average order and recent orders.
Customers
The admin's Payments page for connecting the store's Square account, with the Terminals each register has paired.
Connect Square
The admin's Languages page: English and Ukrainian fully translated, Cantonese partly, a default language, and a preview of the language picker.
Turn languages on and off

The cellar

What it is built on, and how to move in.

  • Live everywhere

    A new order, a dish selling out, a song skipping: every open screen hears about it at once over Server-Sent Events. Nothing polls.

  • Multilingual

    English and Ukrainian are complete, and Cantonese is under way. Each person's language follows them across the store, their emails and their notifications.

  • Locked down by default

    Permissions go down to view, edit and delete on each admin page. Prices and totals are always worked out on the server, and only the server marks a payment paid.

Pavilion is Django 6.1 on Python 3.12 or newer, with plain templates and vanilla JavaScript. There is no npm and no build step. It runs on PostgreSQL and Redis in production and on SQLite while you try it out.

Try it locally

$ git clone https://github.com/Collert/Pavilion.git pavilion
$ cd pavilion
$ python -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt -r requirements-dev.txt
$ cp pavilion/.env.example pavilion/.env
$ python manage.py migrate
$ python manage.py seed_demo
$ python manage.py runserver

Then open /apps/ on your machine. seed_demo fills in the Corner Kitchen demo with menus, orders and staff. Skip it and Pavilion opens a first-time setup screen that asks for your store's name, address, tax rate and time zone.

Run it for real

$ cp pavilion/.env.example pavilion/.env
$ docker compose up -d
$ docker compose exec web python manage.py setup_code

The compose file brings the web app, Postgres, Redis, a scheduler for the daily jobs, routing and address lookup. Put a TLS proxy in front. Most settings live in the admin, not in environment variables.

What it plugs into

  • Square

    Payments

    Terminals, online payments, saved cards and refunds, on your own account

  • listmonk

    Email

    Transactional email, newsletters and event announcements

  • Web Push

    Built in

    Order updates and courier alerts. The keys are generated for you

  • Valhalla and Nominatim

    Self-hosted

    OpenStreetMap routing and address lookup for deliveries

  • weatherapi.com

    Optional

    The weather widget on screens

  • Gotenberg

    Optional

    Screenshots for the store app's install sheet

  • Bugsink

    Optional

    Error reporting

  • S3-compatible storage

    Production

    Photos and music in production

Made for the places that know your order before you reach the counter.