A live interactive quiz application built for Laracon EU 2026. Participants register, answer timed multiple-choice questions, and compete on a real-time leaderboard. Top scorers advance to a live finale round with audience display and moderator controls.
- Registration & Email Verification — Participants sign up and verify via email code
- Timed Quiz Rounds — Multiple-choice questions with countdown timer and instant scoring
- Live Scoreboard — Real-time leaderboard ranked by score and completion time
- Finale Mode — Top participants compete live with a big-screen display, moderator panel, and manual point awarding
- Admin Panel — Manage quizzes, questions, participants, and rounds via Filament
- Real-time Updates — WebSocket-powered live standings via Laravel Reverb
| Layer | Technology |
|---|---|
| Backend | Laravel 12, PHP 8.4 |
| Frontend | Vue 3, Inertia.js v2, TypeScript |
| Styling | Tailwind CSS v4 |
| Real-time | Laravel Reverb (WebSockets) |
| Admin | Filament v4 |
| Auth | Laravel Fortify |
| Database | PostgreSQL |
| Testing | Pest v4 |
| Code Quality | Laravel Pint, ESLint, Prettier |
- PHP 8.2+
- PostgreSQL
- Node.js 18+
- Composer
# Clone the repository
git clone https://github.com/byte5digital/laracon-eu-2026-quiz.git
cd laracon-eu-2026-quiz
# Install dependencies and set up the application
composer setupThe composer setup script handles everything: installing PHP and Node dependencies, generating an app key, running migrations, and building frontend assets.
Copy the example environment file and adjust values as needed:
cp .env.example .envKey environment variables:
| Variable | Description |
|---|---|
DB_CONNECTION |
Database driver (pgsql) |
DB_DATABASE |
Database name |
BROADCAST_CONNECTION |
Set to reverb for real-time features |
REVERB_APP_ID / REVERB_APP_KEY / REVERB_APP_SECRET |
Reverb WebSocket credentials |
Start all development services (web server, queue worker, Vite, Reverb, and log tail) with a single command:
composer run devOr run services individually:
php artisan serve # Web server
npm run dev # Vite dev server
php artisan reverb:start # WebSocket server
php artisan queue:listen # Queue worker# Run all tests
php artisan test
# Run a specific test file
php artisan test tests/Feature/ExampleTest.php
# Filter by test name
php artisan test --filter=testName# PHP (Laravel Pint)
vendor/bin/pint
# JavaScript/Vue (Prettier)
npm run format
# Lint JavaScript/Vue (ESLint)
npm run lintapp/
├── Filament/ # Admin panel resources and pages
├── Http/Controllers/ # Inertia page controllers
├── Models/ # Eloquent models (Quiz, Question, Participant, etc.)
└── Events/ # Broadcast events for real-time updates
resources/js/
├── pages/ # Vue page components (Inertia)
│ ├── Quiz/ # Quiz flow (Start, Detail, Results)
│ ├── Finale/ # Finale mode (Display, Moderator, Standings)
│ └── participant/ # Auth pages (Login, Verification)
├── components/ # Reusable Vue components
└── layouts/ # App layouts
database/
├── migrations/ # Database schema
├── factories/ # Model factories for testing
└── seeders/ # Database seeders
This project is open-sourced software licensed under the MIT license.