Vlastislav Svatek f6d3b3d72c revert gitignor
2026-04-26 02:30:28 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:30:28 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:23:11 +02:00
2026-04-26 02:23:11 +02:00

NaughtyBulldogs — Streamer Rating App

Rychlý start (Docker)

# 1. Zkopíruj a edituj .env
cp .env.example .env

# 2. Vygeneruj bcrypt hash admin hesla
docker compose run --rm app php -r "echo password_hash('tve_heslo', PASSWORD_BCRYPT);"
# Zkopíruj výstup do .env jako ADMIN_HASH=...

# 3. Spusť
docker compose up -d

# App běží na http://localhost:8080

Při prvním startu entrypoint automaticky:

  • Počká na PostgreSQL (healthcheck)
  • Vytvoří tabulky a naseeduje všechny streamery ze schema.sql
  • Spustí Apache
# Logy
docker compose logs -f app

# Restart
docker compose restart app

# Stop + smazání dat
docker compose down -v

Stack

  • Frontend: Vanilla JS (single HTML file, no build step)
  • Backend: PHP 8.1+
  • Database: PostgreSQL 14+

Struktura souborů

/
├── public/
│   └── index.html          ← celý frontend
├── api/
│   ├── db.php              ← PDO připojení + helpers (nepřístupné zvenčí)
│   ├── auth.php            ← login / logout / session check
│   ├── streamers.php       ← CRUD streamerů + hodnocení
│   └── live.php            ← live refresh (Twitch + Kick API)
├── config.php              ← credentials (NIKDY do gitu!)
├── schema.sql              ← PostgreSQL schéma + seed data
├── .htaccess               ← routing + security headers
└── .gitignore

Instalace

1. PostgreSQL databáze

# Vytvoř databázi a uživatele
psql -U postgres
CREATE DATABASE streamers_db;
CREATE USER streamers_user WITH ENCRYPTED PASSWORD 'silne_heslo';
GRANT ALL PRIVILEGES ON DATABASE streamers_db TO streamers_user;
\q

# Aplikuj schema
psql -U streamers_user -d streamers_db -f schema.sql

2. config.php

cp config.php config.php
# Edituj hodnoty:
# - DB_HOST, DB_NAME, DB_USER, DB_PASS
# - ADMIN_HASH — vygeneruj: php -r "echo password_hash('tve_heslo', PASSWORD_BCRYPT);"
# - SESSION_SECRET — náhodný string min 32 znaků
# - TWITCH_CLIENT_ID + TWITCH_CLIENT_SECRET (z https://dev.twitch.tv/console/apps)
# - ALLOWED_ORIGIN — tvá doména

3. Twitch API credentials

  1. Jdi na https://dev.twitch.tv/console/apps
  2. Vytvoř novou aplikaci
  3. OAuth Redirect URL: https://tvadomena.cz
  4. Zkopíruj Client ID a Client Secret do config.php

4. Nahrání na server

# Nahraj všechny soubory kromě config.php (ten edituj přímo na serveru)
rsync -av --exclude='config.php' ./ user@server:/var/www/streamers/

# Na serveru edituj config.php
ssh user@server
nano /var/www/streamers/config.php

5. PHP session nastavení

Ujisti se, že server má session.cookie_httponly = On a session.cookie_secure = On (pro HTTPS).

API endpoints

Method URL Auth Popis
GET /api/streamers Veřejný seznam (jen ohodnocení)
GET /api/streamers?all=1 Admin Všichni streamers
POST /api/streamers Navrhnout streamera (divák)
POST /api/streamers?admin=1 Admin Přidat streamera
PUT /api/streamers?id=N Admin Uložit hodnocení
DELETE /api/streamers?id=N Admin Smazat streamera
GET /api/auth?action=check Zkontrolovat session
POST /api/auth?action=login Přihlásit admin
POST /api/auth?action=logout Admin Odhlásit
GET /api/live Admin Refresh live statusů

Live refresh

  • Twitch: Helix API, batch po 100 streamerech — Přesný, spolehlivý
  • Kick: veřejný endpoint kick.com/api/v2/channels/{name} — funguje bez auth, ale může se změnit
  • Cache: výsledky jsou cachované 120s (nastavitelné v config.php jako LIVE_CACHE_TTL)
  • Refresh se spouští ručně tlačítkem v admin panelu (nebo cron job)

Volitelný cron pro automatický refresh

# Každé 3 minuty refreshuj live statusy (potřebuje admin session — doporučeno CLI script)
*/3 * * * * curl -s -b "PHPSESSID=..." https://tvadomena.cz/api/live > /dev/null

.gitignore

config.php
/tmp/
*.log
Description
No description provided
Readme 86 KiB
Languages
HTML 52.7%
PHP 36.5%
PLpgSQL 5.7%
Shell 4.3%
Dockerfile 0.8%