Brite POSBritePOS
Brite Admin

Every operational knob has a UI.

Categories, menu items, modifiers, kitchen stations, courses, course groups, bars, printers, employees, terminal readers, hot list pins, extra charges, restaurants, API keys, agent tokens. All server-rendered, fast and offline-friendly.

Screenshot placeholder
Admin dashboard — at-a-glance day view
Screenshot placeholder
Catalog items — Active / Retired tabs
Catalog management

Menu engineering in plain HTML.

Categories with parent/child trees, per-category color tokens, display-category pins, and admin-curated Hot List items. Items with multiple priced variations, modifier-list attachments, kitchen-station routing, per-item printer override, tax band, prep time, default course.

  • Active / Retired tabs
    Items with order history can't be hard-deleted. Delete retires them; Retired tab restores in one click.
  • Per-language overrides
    Eight languages on the catalog — English, Dutch, German, Spanish, French, Vietnamese, Cantonese, Mandarin. Items index flags untranslated rows.
  • Bar entities
    A restaurant can define many bars — Main, Service, Patio — each rooted on a category and a printer.
  • Hot list pins
    Admin-flagged items surface as a top-level pill on every cashier menu.
Restaurant configuration

Every operational rule, settable in one form.

Each restaurant is its own tenant on the same backend. Pacing modes, KDS integration, VAT bands, currency, time zone, tip mode, extra charges, encrypted Google Maps keys — all per-restaurant, all switchable without code.

  • Pacing modes
    kitchen (every line bumped individually) or course (Ready/Bump cycle advances through current_course).
  • KDS integration mode
    kds_only, printer_only, or both. Decides whether the cashier sees a paper Send button or waits for the kitchen display to bump lines.
  • Two VAT bands per restaurant
    high / low / none per item. The pay screen and receipts break the total down by band — 'Standard VAT 21%' instead of one opaque 'Tax:' line.
  • Prices include tax toggle
    EU-style inclusive pricing or US-style exclusive pricing. Cashier surface, receipts, and reservation widget all flip in lockstep.
  • Tip mode + tip-on-signature
    Included (auto-percent) or manual. Tip-on-signature for credit card flows — authorize for the check, customer writes a tip, cashier settles auth + tip in one go.
  • Pooled tips flag
    When set, reports treat all tips as a single pool to be split rather than per-server attribution.
  • Extra charges
    Hospitality Surcharge, Stadium Tax, Gratuity — pro-rated by guest share, with start / end activation dates.
  • Currency + timezone + date format
    Per-restaurant. 'Today' on every dashboard is computed in the restaurant's local zone, not the server's.
  • Encrypted Google Maps keys
    Geocoding + embedded static map on the booking widget. Treated as payment-grade secrets at rest.
Floor plan designer

Drag, rotate, snap-to-grid.

Tables, chairs, walls, plants, dividers. Each table gets a name (Patio 4), shape, min/max capacity, and a stable layout_key so a renamed table doesn't orphan its history.

Screenshot placeholder
Floor plan designer — multi-area
  • Multiple areas
    Dining Room, Patio, Bar — cashier tablets switch between them with a tab strip.
  • Capacity rules
    Min/max capacity informs the table auto-assigner for incoming bookings.
  • Custom shapes
    Custom SVG paths supported alongside rect / round / pill.
Reservations

A full reservations module, not an afterthought.

Shifts (Brunch, Lunch, Dinner) with per-shift open hours and capacity caps. Closed days. Events with limited-capacity special menus. Booking tags. Customer profiles with history rollup. Waitlist with quoted times. Real-time host-stand overview.

Screenshot placeholder
Reservations overview — host stand live view
Screenshot placeholder
Booking drawer — tags, allergies, notes
  • Shifts + closed days
    Per-shift hours and capacity caps. Holiday + private-event blocking with two clicks.
  • Customer profiles
    Pat has booked here 8 times, average party 3.5, last visit 14 days ago.
  • Waitlist
    Quoted wait times, party + phone, an at-the-host-stand Seat now button.
  • Auto table assigner
    Suggests the best free table given party size and min/max rules.
  • Booking statuses
    Pending → confirmed → seated → completed, plus no-show + cancelled terminal states.
  • Real-time host overview
    Live dashboard at /admin/reservations/overview that updates without a refresh.
Public booking widget

Drop into your restaurant's marketing site.

A drop-in iframe widget customers embed under a per-restaurant UUID. Customer picks date, party, shift, time slot; the booking lands in the admin backend immediately with the matching API key audit trail. Survives multi-restaurant deploys.

Video placeholder
Customer-facing booking widget demo
Voice + AI booking

Phone reservations that land where the host sees them.

A dedicated Voice Booking API lets voice or AI agents take reservations remotely. The booking it writes is indistinguishable from a web-widget booking or a hand-keyed one — voice is just another input lane.

  • X-API-Key auth + per-restaurant scope
    Keys minted from Integrations → API Keys, stored hashed, revokable individually. Middleware confirms the key matches the restaurant in the URL.
  • Pre-flight availability check
    Voice agent asks 'is this slot bookable for this party?' before collecting guest details, so it can offer alternatives if the time doesn't work.
  • Today-bookings sync
    AI agents can pull today's bookings (to know who's expected) and patch booking statuses (cancellations, phone-confirmed no-shows).
  • Brite Voice Relay credentials
    Each restaurant can wire in a bearer token issued by Brite's hosted voice relay; the backend polls it on a schedule to pull queued bookings the AI took by phone.
  • Rate-limited per IP
    60 requests / minute is generous for a busy voice agent but tight enough that a stolen key can't spam fake bookings.
Payment processors

Stripe, Square, Mollie. Multi-provider per restaurant.

Card payments route through a configured PaymentProcessor row. Credentials live there (test mode + live mode keys, webhook secrets, terminal location ids); the restaurant just picks one via an FK on its edit form. Multi-provider per restaurant supported — card via Stripe, iDEAL via Mollie, on the same till.

  • Stripe Terminal + Stripe Checkout
    Card-present via attached terminal readers; online + QR via Checkout sessions for send-a-payment-link flows.
  • Square Terminal
    Paired Square Reader with tap, EMV, and swipe.
  • Mollie
    European online + QR + terminal, including iDEAL.
  • Refund options preview
    Before committing, the cashier sees which methods are available on the order and the max refundable amount per method. Partial line refund or full-order refund — card refunds reverse the provider's intent; cash refunds record a Payment row + queue paper slips.
Reports

The numbers, surfaced where decisions get made.

Screenshot placeholder
Revenue report — daily + hourly
Screenshot placeholder
Kitchen performance — fire-to-bump per station
  • Revenue
    Gross / net / tax by day or hour. JSON endpoints available for custom embeds.
  • Receipts
    Every paid order in a window with full line-item drill-down, payment method, change given.
  • Menu items
    Quantity sold per item, revenue per item, filtered by date range so seasonal performance is visible at a glance.
  • Kitchen performance
    Ticket-fire to bump time per station, per-station throughput, longest open ticket.
  • Employees
    Clock-in records, shift hours, total tips per staffer.
  • Hourly heatmap
    Sales density by hour-of-day × day-of-week so scheduling has ground truth.
Users + roles + time clock

PIN login, on-shift broadcast auth, clean audit trail.

Every shift-start records an employee_schedules row. Sign-out prompts Clocking out vs Going on break. The realtime broadcast auth refuses to authorize a clocked-out user, so a clocked-out staffer can't quietly watch the bar feed.

  • PIN-only LAN login
    Tablets on the LAN sign in with a PIN keypad. The backend gates this to private hostnames so a public deployment falls back to email + password.
  • Three roles
    Admin (full backend), manager (reports + comps + most setup), employee (cashier app only — no web admin surface).
  • Multi-restaurant membership
    A single user can work across several restaurants under one login. The admin sidebar restaurant switcher swaps the active tenant.
  • Time clock
    Every shift-start row is recorded. Sign-out prompts clocking-out vs on-break; the realtime layer refuses to broadcast to off-shift users.
API keys + agent tokens

Keys with the smallest blast radius.

Every external integration gets its own scoped credential — public booking widgets, print agents, voice-AI relays — so revoking one doesn't take the others down.

  • Public booking-widget keys
    Embedded under a per-restaurant UUID. Each key authorizes only that restaurant's slot lookups and booking writes.
  • Print-agent tokens
    One token per agent, revokable from the admin UI without disrupting other agents on the same LAN.
  • Voice-AI relay credentials
    Bearer token issued by Brite's hosted voice relay, paired per restaurant. The backend polls the relay on a schedule.