Align both documents with resolved tech stack choices: - Hetzner PVE hosting, Docker-based RPi5 nodes - Android display client with mDNS (no Chromecast dependency) - Event-based NATS sync, 72h offline limit - PVM signup-first accounts, no money handling - Add tech stack summary table to README Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
<p align="center">
|
|
<img src="docs/assets/logo-placeholder.svg" alt="PVM Logo" width="120" />
|
|
</p>
|
|
|
|
<h1 align="center">PVM</h1>
|
|
<h3 align="center">Poker Venue Manager</h3>
|
|
|
|
<p align="center">
|
|
<strong>The all-in-one platform for poker venue operations.</strong><br/>
|
|
Tournaments. Cash games. Dealers. Players. Displays. All managed. Always on.
|
|
</p>
|
|
|
|
<p align="center">
|
|
<code>SaaS</code> · <code>Offline-Capable</code> · <code>Real-Time</code> · <code>Multi-Venue</code>
|
|
</p>
|
|
|
|
---
|
|
|
|
## What is PVM?
|
|
|
|
PVM is a comprehensive management system for poker venues of any size. It handles the full lifecycle of venue operations:
|
|
|
|
- **Tournament Management** — Planning, live clocks, seating, registration, results, and recurring series
|
|
- **Cash Game Operations** — Table tracking, waiting lists, game types, and session history
|
|
- **Player Accounts** — One account across all venues, memberships, and game history. Players sign up for PVM first, then join venues.
|
|
- **Dealer Coordination** — Scheduling, availability, shift swaps, and cross-venue mobility
|
|
- **Venue Display System** — Push live clocks, seatings, waitlists, and info to any TV via Android display clients with mDNS auto-discovery
|
|
- **Local Node Support** — Optional on-premise Raspberry Pi 5 proxy (Docker-based) for zero-downtime operation during internet outages (up to 72h offline)
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Hetzner PVE (LXC + Docker)
|
|
├── Rust API (Axum) + WebSocket Gateway
|
|
├── PostgreSQL 16 + DragonflyDB
|
|
├── NATS + JetStream
|
|
└── SvelteKit Web Apps
|
|
│
|
|
├── near-realtime event sync (NATS) ──► Venue RPi5 Nodes (Docker)
|
|
├── Web App / PWA (managers, staff, players, dealers)
|
|
└── Venue TVs (Android display client, cloud fallback)
|
|
```
|
|
|
|
## Tech Stack
|
|
|
|
| Layer | Technology |
|
|
|-------|-----------|
|
|
| Backend | Rust + Axum |
|
|
| Frontend | SvelteKit (Svelte 5) + shadcn-svelte + Tailwind v4 |
|
|
| Cloud DB | PostgreSQL 16+ |
|
|
| Local DB | libSQL (embedded) |
|
|
| Cache | DragonflyDB |
|
|
| Messaging | NATS + JetStream |
|
|
| Auth | Custom JWT + RBAC |
|
|
| API | REST + OpenAPI 3.1 |
|
|
| Infra | Hetzner PVE, Docker, Forgejo Actions |
|
|
|
|
## Documentation
|
|
|
|
- **[Vision & Feature Overview](docs/VISION.md)** — The full product vision and feature roadmap
|
|
- **[Tech Stack Research](docs/TECH_STACK_RESEARCH.md)** — Comprehensive technology decisions and reasoning
|
|
|
|
---
|
|
|
|
<p align="center">
|
|
<sub>Built for the poker community.</sub>
|
|
</p>
|