60 lines
No EOL
1.9 KiB
Markdown
60 lines
No EOL
1.9 KiB
Markdown
# Live Audience Response System
|
|
|
|
Ett webbbaserat system för att samla in svar från en live-publik och visa resultaten i realtid. Systemet är byggt med Node.js, Socket.IO och SQLite, och kan köras i en Podman-container.
|
|
|
|
## Funktioner
|
|
|
|
- **Live-formulär**: Deltagare kan välja mellan förutbestämda alternativ eller lägga till egna
|
|
- **Flerval**: Användare kan välja flera alternativ
|
|
- **Dynamiska alternativ**: Nya alternativ som läggs till av användare blir automatiskt tillgängliga för andra
|
|
- **Live-resultat**: Admin-panel med realtidsuppdateringar av resultat
|
|
- **QR-kod**: Genereras automatiskt för enkel delning av formuläret
|
|
- **Responsiv design**: Fungerar på både desktop och mobil
|
|
- **Persistent data**: SQLite-databas för säker datalagring
|
|
|
|
## Teknisk stack
|
|
|
|
### Backend
|
|
- **Node.js** med Express.js
|
|
- **Socket.IO** för realtidskommunikation
|
|
- **SQLite** för datalagring
|
|
- **QR Code generator** för QR-kodgenerering
|
|
|
|
### Frontend
|
|
- **Vanilla JavaScript** med Socket.IO client
|
|
- **Chart.js** för datavisualisering
|
|
- **Responsiv CSS** med modern design
|
|
|
|
### Container
|
|
- **Podman** (eller Docker) för containerisering
|
|
- **Multi-stage build** för optimerad bildstorlek
|
|
|
|
|
|
# Kör applikationen
|
|
|
|
```bash
|
|
podman run -d --restart=on-failure --name aeroklubben-arbetsgrupp-live -p 7000:3000 -v ./data:/app/data:Z aeroklubben-arbetsgrupp-live
|
|
```
|
|
|
|
## Användning
|
|
|
|
### För deltagare
|
|
1. Besök huvudsidan: `https://aeroklubben.hostux.fr`
|
|
2. Välj ett eller flera alternativ
|
|
3. Lägg till egna alternativ om önskat
|
|
4. Skicka svaret
|
|
|
|
### För administratör
|
|
1. Besök admin-panelen: `https://aeroklubben.hostux.fr/admin`
|
|
2. Visa QR-koden för deltagare
|
|
3. Följ live-resultat i realtid
|
|
4. Se statistik och diagram
|
|
|
|
## API-endpoints
|
|
|
|
- `GET /` - Huvudformulär
|
|
- `GET /admin` - Admin-panel
|
|
- `GET /api/options` - Hämta tillgängliga alternativ
|
|
- `GET /api/results` - Hämta resultat
|
|
- `POST /api/submit` - Skicka svar
|
|
- `GET /api/qr` - Hämta QR-kod |