Files
portfolio/src/content/projects/cue.mdx
T
patrick 23e5e17be5 feat: add support for multiple links in projects
Projects now support multiple links (source code, demo, etc) each with a label. Migrated all projects to use the new schema.
2026-05-14 12:49:57 -04:00

58 lines
2.3 KiB
Plaintext
Vendored

---
name: 'Cue: On-Demand Resource Booking'
description: 'An on-demand resource booking system built for an arcade/pool venue'
tags: ['python', 'typescript', 'svelte', 'postgresql']
image: '../../../public/static/cue.webp'
order: 3
startDate: '2025-09-23'
---
<div class="flex flex-wrap gap-2 my-0! [&>img]:my-0! [&>img]:mt-2!" >
<img src="https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=FFD43B" alt="Python" />
<img src="https://img.shields.io/badge/PostgreSQL-336791?style=for-the-badge&logo=postgresql&logoColor=white" alt="PostgreSQL" />
<img src="https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript" />
<img src="https://img.shields.io/badge/Svelte-FF3E00?style=for-the-badge&logo=svelte&logoColor=white" alt="Svelte" />
<img src="https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker" />
</div>
Cue is an on-demand resource booking system built for an arcade and pool venue. The UI was designed to run on a terminal-like POS touchscreen.
<video
src="/static/cue.webm"
autoplay
loop
muted
playsinline
preload="auto"
class="w-full"
></video>
## The Problem
The venue's existing workflow had several pain points:
- **Unreliable alerts** — Employees set phone alarms to track booking end times, which was error-prone and easy to miss
- **Cost overruns** — The machine tracking running costs would often exceed the pre-paid amount, since payment happens at booking time, not at the end
- **End-of-shift reconciliation** — Staff had to manually recalculate totals to verify the day's earnings matched expectations
Cue eliminates these issues by centralizing booking management with real-time tracking and automatic cost calculation.
## Features
- Book arbitrary resource types (pool tables, arcade machines, etc.)
- Admins configure pricing and valid booking durations per resource
- Real-time updates via REST API and Server-Sent Events (SSE)
- Maintenance windows to mark resources as unavailable
- Move bookings between resources of the same type
- Cancel or extend active bookings
- Admins configure which operations require employee authentication
## Tech Stack
- **Frontend**: TypeScript, Svelte
- **Backend**: Python, PostgreSQL
- **Communication**: REST API, SSE for real-time updates