Skip to main content
Všechna konfigurace žije ve třech JSON souborech v config/. Žádné .env, žádné prostředí — vše je explicitně v repozitáři (s tím, že produkční verze obsahuje skutečné secrety a do gitu nepatří).

config/app.json

Hlavní konfigurace. Strukturně:
{
  "app": {
    "name": "DAYZERO PORTAL",
    "version": "2025.2",
    "developer_mode": true,
    "rooturl": "https://dayzero.cz/portal",
    "cron_secret": "<random-32-chars>"
  },
  "db": {
    "host": "localhost",
    "database": "u665790508_cms",
    "username": "...",
    "password": "..."
  },
  "mail": {
    "host": "smtp.hostinger.com",
    "port": 587,
    "encryption": "tls",
    "from_address": "[email protected]",
    "from_name": {
      "cs": "Portál DAYZERO.CZ",
      "en": "DAYZERO.CZ Portal"
    }
  },
  "oauth2": {
    "discord": {
      "client_id": "...",
      "client_secret": "...",
      "redirect_uri": ".../api/v1/auth/providers/discord?action=callback",
      "scopes": "identify email guilds.join"
    },
    "steam": {
      "api_key": "...",
      "redirect_uri": ".../api/v1/auth/providers/steam?action=callback"
    }
  },
  "upload": {
    "base_path": "/.../uploads",
    "public_url": "/portal/uploads",
    "images": { "max_size": 5242880, "extensions": ["jpg","jpeg","png","gif"] },
    "anthems": { "max_size": 10485760, "extensions": ["ogg"] }
  },
  "whitelist": {
    "questions": [
      { "id": "experience", "type": "select", "required": true,
        "label_key": "_label.whitelist.q.experience",
        "options": [...] }
    ]
  },
  "support": {
    "iban": { "cz": "CZ8420...", "sk": "CZ8820..." },
    "bic": "FIOBCZPPXXX",
    "amounts": { "cz": [40,80,120], "sk": [2,3,5] },
    "currency": { "cz": "CZK", "sk": "EUR" }
  }
}

Klíčové sekce

SekceSmysl
app.cron_secretTajný klíč pro cron.php?key=… — nesdílejte.
app.developer_modeTrue zapne podrobné chybové hlášky. V produkci false.
db.*DB credentials (PDO).
mail.*SMTP credentials a default sender.
oauth2.discordDiscord OAuth2 aplikace — client_id, client_secret, callback URL.
oauth2.steamSteam Web API key.
upload.*Limity uploadů a fyzická cesta.
whitelist.questionsKonfigurace otázek pro whitelist žádost.
support.iban / support.amountsKonfigurace dárcovství (QR kódy).

config/routes.json

Pole route definic — viz Routing.

config/api.json

Per-endpoint nastavení (typicky rate limit overrides). Pokud není zadáno, platí default 30 req / 60 s.

Secrets

Citlivé hodnoty (db.password, oauth2.*.client_secret, app.cron_secret):
  • V produkci jsou v config/app.json přímo na serveru.
  • V repozitáři se buď vůbec nenachází, nebo se používá .example šablona.
  • Žádný secret rotation systém — případnou výměnu řešíte ručně.
Pokud cron_secret unikne, kdokoli může spouštět cron joby. Ihned ho přepište a invalidujte staré.

Konfigurační runtime

Třída Core/Config.php načítá soubory při bootu, cachuje je jako PHP objekt. Změny v souboru vyžadují reload procesu (FPM / Apache).