Skip to content

Commit e0ada74

Browse files
docs: update README for public release preparation
- Update tech stack versions to reflect current dependencies (Laravel 12, Livewire 3, Flux UI 2, Tailwind CSS 4, Pest 3, Vite 7) - Clarify buzzer integration using Pinout package with GPIO pins - Document Laravel Reverb as the WebSocket solution instead of Pusher/Ably/Soketi - Add missing components (HostControl, Leaderboard, VolunteerPicker) to key components list - Correct API endpoint documentation from POST to GET with proper parameters - Include volunteer picker and specific sound effects in features list - Update development server address to 0.0.0.0:8000 - Add Reverb to the list of services started by composer run dev
1 parent 0a2a489 commit e0ada74

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

README.md

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Laravel Jeopardy 🎮
22

3-
A live, interactive Jeopardy game built with Laravel 12, Livewire, and Flux UI - designed for Laravel Live Denmark and other live events.
3+
A live, interactive Jeopardy game built with Laravel 12, Livewire 3 with Flux UI, and Tailwind CSS 4 - designed for Laravel Live Denmark and other live events.
44

55
![Laravel](https://img.shields.io/badge/Laravel-v12-FF2D20?style=for-the-badge&logo=laravel&logoColor=white)
66
![Livewire](https://img.shields.io/badge/Livewire-v3-FB70A9?style=for-the-badge&logo=livewire&logoColor=white)
@@ -10,15 +10,17 @@ A live, interactive Jeopardy game built with Laravel 12, Livewire, and Flux UI -
1010
## 🎯 Features
1111

1212
- **Real-time Game Board**: Interactive Jeopardy board with categories and clues
13-
- **WebSocket Buzzer System**: Hardware buzzer integration via Raspberry Pi
13+
- **WebSocket Buzzer System**: Hardware buzzer integration via Raspberry Pi (using Pinout package)
1414
- **Team Management**: Multiple teams with real-time score tracking
1515
- **Special Features**:
1616
- Daily Double clues with wagering
1717
- Lightning Round for rapid-fire questions
1818
- Timer system with automatic timeouts
19-
- Sound effects for enhanced gameplay
19+
- Sound effects for enhanced gameplay (correct/incorrect answers, countdown timer)
2020
- **Game State Recovery**: Persistent game state with full recovery capabilities
2121
- **Admin Controls**: Host interface for managing gameplay
22+
- **Real-time Broadcasting**: Laravel Reverb for WebSocket connections
23+
- **Volunteer Picker**: Random volunteer selection from attendee list
2224

2325
## 🚀 Quick Start
2426

@@ -65,10 +67,11 @@ A live, interactive Jeopardy game built with Laravel 12, Livewire, and Flux UI -
6567
```
6668

6769
This command starts:
68-
- Laravel server on `http://localhost:8000`
70+
- Laravel server on `http://0.0.0.0:8000`
6971
- Vite dev server for hot module replacement
7072
- Queue worker for background jobs
7173
- Pail for real-time log monitoring
74+
- Reverb WebSocket server for real-time events
7275

7376
## 🎮 Game Setup
7477

@@ -81,25 +84,25 @@ A live, interactive Jeopardy game built with Laravel 12, Livewire, and Flux UI -
8184

8285
### Buzzer Integration
8386

84-
The game supports hardware buzzers via Raspberry Pi. Configure your buzzer endpoint:
87+
The game supports hardware buzzers via Raspberry Pi using the Pinout package.
8588

86-
```env
87-
BUZZER_API_ENDPOINT=http://your-raspberry-pi:3000
88-
```
89-
90-
The buzzer system sends POST requests to `/api/buzzer` with team identification.
89+
To set up the buzzer system:
90+
1. Connect buzzers to GPIO pins (see `app/Console/Commands/BuzzerServer.php` for pin configuration)
91+
2. Run the buzzer server: `php artisan buzzer-server`
92+
3. The buzzer server sends events to `/api/buzzer` when buttons are pressed
9193

9294
## 🏗️ Architecture
9395

9496
### Tech Stack
9597

96-
- **Backend**: Laravel 12 with Livewire
97-
- **UI Components**: Flux UI (Livewire component library)
98-
- **Frontend**: Tailwind CSS 4, Alpine.js
99-
- **Real-time**: Laravel Broadcasting with Pusher/Ably/Soketi
98+
- **Backend**: Laravel 12 with Livewire 3
99+
- **UI Components**: Flux UI 2 (Livewire component library)
100+
- **Frontend**: Tailwind CSS 4, Alpine.js (included with Livewire)
101+
- **Real-time**: Laravel Reverb for WebSocket connections
100102
- **Database**: SQLite (default), MySQL/PostgreSQL supported
101-
- **Testing**: Pest PHP
102-
- **Asset Bundling**: Vite
103+
- **Testing**: Pest PHP 3
104+
- **Asset Bundling**: Vite 7
105+
- **Hardware Integration**: Pinout package for GPIO control
103106

104107
### Project Structure
105108

@@ -121,6 +124,7 @@ laravel-jeopardy/
121124
│ └── seeders/ # Database seeders
122125
├── public/
123126
│ └── sounds/ # Game sound effects
127+
│ └── buzzer/ # Team-specific buzzer sounds
124128
└── tests/ # Test files
125129
```
126130

@@ -131,6 +135,9 @@ laravel-jeopardy/
131135
- **TeamScoreboard**: Real-time score tracking
132136
- **BuzzerListener**: WebSocket event handler
133137
- **LightningRound**: Speed round implementation
138+
- **HostControl**: Admin interface for game management
139+
- **Leaderboard**: Display team standings
140+
- **VolunteerPicker**: Random attendee selection
134141

135142
## 🧪 Testing
136143

@@ -181,15 +188,13 @@ php artisan migrate:fresh --seed # Fresh install with data
181188
### Buzzer API
182189

183190
```http
184-
POST /api/buzzer
185-
Content-Type: application/json
186-
187-
{
188-
"team_id": 1,
189-
"timestamp": "2024-01-01T12:00:00Z"
190-
}
191+
GET /api/buzzer
192+
Query Parameters:
193+
- pin_id: The GPIO pin index of the pressed buzzer
191194
```
192195

196+
Receives buzzer events from the hardware buzzer server running on the Raspberry Pi.
197+
193198
## 🤝 Contributing
194199

195200
1. Fork the repository

0 commit comments

Comments
 (0)