


Kompletny przewodnik po platformie: wielo‑tenantowy, white‑label system lojalnościowy dla streamerów. Widzowie zbierają tokeny (GT) za aktywność na Twitch / Kick / YouTube / Discord i wymieniają je w sklepie, kasynie, predykcjach, eventach i battle passie. Streamer konfiguruje cały portal z jednego panelu.
Jak zdobywać tokeny i korzystać z funkcji portalu.
Rdzeń platformy — waluta GT, poziomy i codzienne nagrody. Dostępne w każdym planie (także darmowym).
Wirtualna waluta portalu. Zdobywasz GT za czat, oglądanie, suby, donejty i questy — saldo widać zawsze w nagłówku. Nazwa i symbol waluty są ustawiane przez streamera (np. „Ghost Tokens / GT”).

Darmowa porcja GT raz na dobę. Im dłuższa seria dni z odbiorem, tym większy bonus; pominięty dzień resetuje serię.
/u/[username]Aktywność daje XP i podnosi poziom (do 100). Po maksymalnym poziomie zdobywasz gwiazdki prestiżu (Phantom Ascension) z dodatkowymi perkami.
/questsCodzienne cele (oglądaj, głosuj, graj). Po ukończeniu odbierasz GT; zaliczenie wszystkich daje bonus mnożnikowy. Reset o północy w strefie streamera.

/achievementsOdznaki za kamienie milowe (rzadkości: pospolite → legendarne). Widać Twój status i globalny procent graczy, którzy je zdobyli.

/shopWydawaj GT na kosmetyki i nagrody. Pozycje mogą wymagać poziomu, subskrypcji, prestiżu lub osiągnięcia. Cena i wymagania są zawsze widoczne.

/dropsJednorazowe kody ogłaszane na streamie dające bonus GT. Wpisz kod, odbierz natychmiast. Historia odbiorów jest zapisywana.

/profileZaproś znajomych swoim kodem — gdy dołączą i osiągną próg, oboje dostajecie GT. Licznik i nagrody w sekcji Referrals na profilu.
Codzienny check‑in buduje serię dni oglądania. Progi 3/7/14/30 dni dają GT, a tiery lojalności (🥉🥈🥇💎) pojawiają się jako odznaka na profilu.
Wyślij GT innemu widzowi z jego profilu publicznego — atomowy transfer z limitami dziennymi, miły gest wsparcia.
Rozrywka za GT. Wszystkie wyniki rozstrzyga serwer (uczciwe, bez manipulacji po stronie klienta).
/kasynoSloty, Moneta, Ruletka, Kości, Crash (rakieta), Plinko, Mines, Blackjack, Hi‑Lo i Zdrapki. Ustawiasz zakład (10–100 000 GT), grasz wg zasad danej gry, wygrane dolicza się od razu. Jest leaderboard, historia i progresywny jackpot.

/wheelZakręć kołem o segmenty z nagrodami (GT lub kosmetyki). Każdy spin kosztuje GT; segmenty i koszt ustawia streamer.

/predictionsObstawiaj GT na wynik (np. „Czy wygrasz next mapę?”). Otwarte → przyjmują zakłady, zablokowane → czekają na rozstrzygnięcie, rozstrzygnięte → pokazują wypłaty. Widać Twój bilans typera.

/triviaOdpowiadaj na pytania i zgarniaj GT za poprawne. Pytania zmienia streamer; trackowany jest Twój wynik i seria.

/pollsDarmowe głosowania społeczności (bez GT) — wybór gry, decyzje streamowe, sondy. Wyniki na żywo.

/leaguesSezonowy ranking najlepszych typerów wg skuteczności i bilansu GT. Koniec miesiąca nagradza top 3 i trafia do Galerii Sław. Masz osobistą kartę „Twój sezon”.

/bountiesWidzowie zrzucają GT na wyzwanie dla streamera. Wykona → pula idzie do wspierających (sink), termin minie → pełny zwrot. Możesz wesprzeć cudze lub stworzyć własne.

Funkcje budujące zaangażowanie i rywalizację między widzami.
/rankingGlobalny leaderboard z zakładkami: tokeny, zarobione łącznie, tygodniowo, poziom, seria. Top 100 + Twoja pozycja; klik w nick → profil.

/clansGildie widzów ze skarbcem i rolami. Twórz/dołączaj, wpłacaj do skarbca, rywalizuj w sezonowych wojnach o trofea.

/companionCyfrowy pupil karmiony GT — zdobywa XP i ewoluuje przez etapy. Widoczny na Twoim profilu publicznym.

/collectiblesZbieraj karty z paczek za GT (rzadkości pospolite → legendarne). Duplikaty sprzedasz; kolekcję pokazujesz na profilu.

/marketHandel kartami między graczami za GT. Wystawiasz cenę, kupujący płaci GT, karta wędruje atomowo (5% prowizji spalane = sink).

/clipsTygodniowe głosowanie na najlepszy klip streamera. Zwycięzca jest wyróżniany. Jeden głos na tydzień.

/eventsKonkursy i losowania — darmowe wejścia za zadania lub kupowane bilety (więcej biletów = większa szansa). Po losowaniu widać zwycięzców.

/scheduleTygodniowy plan transmisji z godzinami i platformą. „Dodaj do kalendarza” (Google/iCal) + odliczanie do najbliższego live.

/u/[username]Karta gracza: poziom, prestiż, odznaki (ADMIN/MOD/DONATOR/lojalność), staty, pozycje w rankingach, bilans typera, klan, podłączone platformy i social linki.
/wrappedOsobiste, udostępnialne podsumowanie miesiąca: GT, osiągnięcia, liga, bounties, highlighty. Karta OG do social mediów.

/gamesKatalog gier, w które gra streamer (Steam/PSN/Xbox), z opisami i głosowaniem „następna gra”.

Realne wsparcie streamera, personalizacja i bezpieczeństwo konta.
/soundsPłać GT, by odtworzyć dźwięk na żywo na streamie. Biblioteka z podglądem i ceną; Twój nick jest kredytowany.

/supportRealne wpłaty: linki płatności, portfele krypto (QR), przelew/IBAN. Kopiowanie jednym kliknięciem, kody QR, ściana wspierających, cel zbiórki. Nagłówek/opis/„dziękuję” konfiguruje streamer.

/premiumPorównanie Free vs Premium, przełącznik walut (PLN/EUR/USD), okresy 1/3/12 mies. i 14 dni okresu próbnego. Premium odblokowuje pełen toolkit (kasyno, overlaye, AI, white‑label).

Szybkie wyszukiwanie stron, funkcji i profili widzów z dowolnego miejsca. Enter = przejdź, Esc = zamknij.
Przełącznik jasny/ciemny + wybór z 14 języków (prawy górny róg nagłówka). Preferencje zapamiętywane w przeglądarce.
/profileZarejestruj passkey (odcisk/twarz/PIN) do bezpiecznego logowania bez hasła. Zarządzanie w profilu.
/profileOpcjonalne powiadomienia przeglądarki: wygrane, osiągnięcia, „LIVE teraz”, start eventu. Włączasz w profilu.
Panel /admin to centrum dowodzenia portalem. ~52 sekcje w trybach Prosty / Zaawansowany / Dev. Każdą sekcję otworzysz bezpośrednio linkiem /admin#<id> albo paletą Ctrl+K. Poniżej grupy i co konfigurują. Zrzuty pochodzą z czystego portalu demonstracyjnego (E‑Forge).
Pulpit: kluczowe liczby (userzy, GT w obiegu, zarobione, eventy, zamówienia) + status konfiguracji portalu i skróty.

Wykresy aktywności: wzrost userów, obieg GT, popularność gier i sklepu. Tylko do odczytu.

Źródła (faucets) i sinki GT, dzienny trend, top 10 zarabiających i wydających. Diagnostyka inflacji.

Metody płatności na /support (link/krypto/IBAN), cel zbiórki oraz konfigurowalny tekst strony (nagłówek/opis/„dziękuję”).

Wyślij powiadomienie przeglądarki do wszystkich, którzy się zapisali; podgląd liczby subskrybentów.

Loga sponsorów na /support i opcjonalnej karuzeli OBS — nazwa, link, logo, poziom.

Katalog kart: nazwa, rzadkość, grafika. Widzowie zbierają je z paczek i handlują na markecie.

TYLKO właściciel platformy: zarządzanie portalami klientów — branding, plan (Basic/Pro/Elite), provisioning.

Nagrody na żywo za suby, gifty, bity, raidy, followy. Wymaga autoryzacji OAuth, by Twitch wysyłał zdarzenia kanału.

Integracja Kick — nagrody za suby/gifty/followy przez webhooki.
Czat YouTube, członkostwa i Super Chaty; bot czyta czat, by nagradzać GT.
Status livestreamu Rumble (online/offline, followerzy, suby) na overlayach — wklej zaszyfrowany URL API.
Rdzeń bota: GT za minutę oglądania, bonusy za suby/bity, happy hour (mnożnik w wybranych godzinach).

Własne komendy (np. !discord, !rules) działające na Twitch/Kick/YouTube + overlay czatu.

Cykliczne wiadomości co X minut (np. „Dołącz na Discord”) — tylko gdy stream live.

Pytania i odpowiedzi pokazywane widzom na stronie pomocy.

Powitanie nowych userów portalu + opcjonalny bonus powitalny.

Widzowie zgłaszają utwory (!sr) za GT; zarządzasz odtwarzaniem i kolejką.

Alerty zdarzeń (sub, raid, zakup): wygląd, dźwięk, czas wyświetlania. Źródło przeglądarki w OBS.

Paski celów społeczności (np. „100 subów w tym miesiącu”) — tytuł, cel, postęp na overlayu.

Timer przedłużany subami/donejtami: czas bazowy, sekundy za sub/bit/donejt, limity i cap.

Browser‑source widżety do OBS: liczniki, leaderboardy, cele, alerty, koło. Kopiujesz link → wklejasz w OBS.

Wiele widżetów na jednym płótnie 16:9 → jeden link źródła OBS dla całej sceny.

Widzowie grają dźwięki na streamie za GT — biblioteka, koszt, cooldown.

Reguły alert → akcja OBS: zmiana sceny, pokaż/ukryj źródło, filtr. Wymaga aktuatora browser‑source.

Reguły alert → lampka Govee (kolor/jasność/on‑off, flash→revert). Wymaga klucza API Govee w Integracjach.

Pozycje za GT: nazwa, cena, kategoria, wymagany tier. Dostawa i zamówienia oczekujące tutaj.

Kody odbieralne na stronie + chat‑dropy (pierwsi N widzów łapią bonus). Ustawiasz nagrodę, sloty, wygaśnięcie.

Segmenty (nazwy/nagrody) i koszt spinu dla gry /wheel.

Sezony rankingu: reset leaderboardu, archiwum, nagrody top graczy na koniec.

Twórz predykcje, otwórz zakłady, rozstrzygnij — pula trafia do trafiających.

Szablony świąteczne lub własne eventy: bilety, losowania, czas, mnożniki.

Wyzwania od widzów: oznacz „wykonane” (spal pulę) lub „odrzuć” (zwróć wspierającym).

Twórz sondy widoczne na portalu; głosy liczone na żywo.

Definiuj odznaki (warunek odblokowania, nagroda GT) — portal przyznaje automatycznie.

Stałe sloty transmisji (dni/godziny) pokazywane na /schedule.

Bank pytań quizu (odpowiedzi, nagroda GT) + runda live na overlayu.

Ustawienia klanów (limity, leaderboard) oraz tworzenie i punktacja Wojen Klanów.

Automod: wulgaryzmy (słowa+regex), whitelist linków, capsy, długość, powtórzenia, Zalgo. Akcja: usuń/timeout/ostrzeż, wyjątki dla subów/VIP/modów.

Przyznawanie/odbieranie GT, role (admin/mod), weryfikacja subów, reset bazy (dev). (Sekcja z danymi osobowymi — pominięta na zrzutach.)
Log każdej akcji admina (kto/co/kiedy). Tylko do odczytu. (Pominięte na zrzutach — adresy IP.)
TOTP wymagany przy wrażliwych operacjach (kasowanie, reset). (Sekcja bezpieczeństwa — pominięta na zrzutach.)
Klucze API i tokeny overlayu (AI, OBS, Govee, Steam…). (Sekcja z sekretami — pominięta na zrzutach.)
Działają na Twitch, Kick i YouTube. Streamer może dodawać własne w panelu.
!slots <kwota>Zakręć slotami o GT.Wszyscy!coinflip <kwota>Rzut monetą — podwój albo strać (alias !gamble).Wszyscy!roulette <kwota> <red|black|0-36>Ruletka: kolor (2×) lub liczba (36×). Alias !roleta.Wszyscy!duel <kwota> / !duel @nick <kwota>Otwarty albo imienny pojedynek o GT (escrow do akceptacji).Wszyscy!accept / !declinePrzyjmij lub odrzuć pojedynek; zwycięzca bierze pulę.Wszyscy!heist <kwota>Napad kooperacyjny — większa ekipa = lepsze szanse; rozliczenie ~90 s po starcie.Wszyscy!sr <URL|tytuł>Zgłoś utwór do kolejki (streamer zarządza w /admin#songs).Wszyscy@bot <pytanie>Zapytaj AI bota; odpowiada na czacie (wymaga klucza AI).Wszyscy*!imagine <opis>Wygeneruj obraz AI z opisu (wymaga klucza AI).Wszyscy*<słowo‑klucz>Wpisz słowo ogłoszone przez streamera, by wejść do losowania (suby/mody = więcej biletów).Wszyscy!portal / !ranking / !sklep / !questyDomyślne komendy z linkami; streamer dodaje własne w /admin#chat.Wszyscy* wymaga klucza AI ustawionego przez streamera w sekcji Integracje.
Skrót techniczny — pełna wersja w PDF dla developerów.
Next.js 16 (App Router, RSC) · React 19 · TypeScript (strict) · Prisma 7 + adapter‑pg · PostgreSQL (Supabase) · Auth.js v5 (sesje w bazie) · Tailwind 4 · next‑intl (14 języków) · Stripe · Vitest + Playwright. Hosting: Vercel (auto‑deploy z main).
ghost-empire-web/ — aplikacja Next (app/, components/, lib/, prisma/, messages/, e2e/). Repo root: docs/ (ARCHITECTURE, ENDPOINTS, ENV…), CHANGELOG.md, ROADMAP.md, CLAUDE.md. Sibling: ghost-empire-chat (bot Twitch/Kick/YouTube).
Tenant rozwiązywany po hoście (subdomena <slug>.root lub custom domain → domyślnie founder). Prawie każdy model ma nullable tenantId; odczyty/zapisy scope’owane przez currentTenantId(); per‑tenant composite uniques. Branding (nazwa, kolor, token, logo, social) z wiersza Tenant.
Auth.js v5, strategy „database”, tenant‑aware Prisma adapter (ta sama tożsamość OAuth → osobny User per portal). Providerzy: Twitch, Discord, Google (YouTube), Kick. Stałe adminy po e‑mailu przeżywają reset bazy.
Trasy w src/app/api/. Gatey: requireAdmin / requirePermission / requirePlatformOwner, featureGateResponse (plan basic⊂pro⊂elite). Klient apiGet/apiPost. Rate‑limit (Redis→pamięć). Webhooki podpisywane (Stripe/Twitch/Kick).
Z ghost-empire-web/: npx tsc --noEmit · npx vitest run · npx eslint <pliki> · npx next build · npm run docs:check. Wszystkie muszą być zielone (egzekwowane w CI). Reguła docs‑sync: każdy PR aktualizuje CHANGELOG (#NNN).
Dry‑wired: bez kluczy checkout → 503, trial 14 dni bez karty. lib/premium.ts trzyma czyste stałe (waluty, ceny lustrzane do Stripe). Webhook /api/webhooks/stripe aktualizuje plan tenanta. Wielowaluta przez Stripe currency_options.
Node ≥ 22. Z ghost-empire-web/: cp .env.example .env.local, ustaw DATABASE_URL/DIRECT_URL/NEXTAUTH_SECRET/BOT_SECRET + jeden provider OAuth. npm install → npm run db:push → npm run db:seed → npm run dev (localhost:3000).