Popis Projektu
Komplexní obchodní platforma pro Albion Online
Jedná se o rozsáhlou webovou aplikaci postavenou na platformě WordPress, která slouží jako hlavní obchodní a komunitní centrum pro hráče online hry Albion Online. Projekt dalece přesahuje standardní webovou prezentaci a funguje jako plnohodnotná webová aplikace (SPA-like interface) s vlastním ekosystémem pluginů, robustním REST API rozhraním, real-time WebSocket serverem a pokročilou automatizací pro zajištění plynulého a moderního uživatelského zážitku. Cílem projektu bylo vytvořit důvěryhodné, rychlé a uživatelsky přívětivé tržiště řízené komunitou.
Veřejná část webu a tržiště
Pro neregistrované i přihlášené uživatele web funguje jako plnohodnotné tržiště s pokročilými funkcemi pro vyhledávání a prohlížení herních předmětů, které je navrženo pro maximální rychlost a interaktivitu.
- Živý přehled nabídek: Hlavní stránka a specializované „ticker“ stránky využívají technologii WebSockets (Node.js server) k zobrazování nově přidaných nabídek v reálném čase bez nutnosti obnovovat stránku. Tím je zajištěn okamžitý přehled o dění na trhu napříč všemi herními servery.
- Dynamické stránky předmětů: Díky vlastním pravidlům pro přepisování URL (Rewrite Rules) jsou pro každý předmět generovány unikátní stránky (např.
/market/europe/T4_BAG/). Tyto stránky nejsou standardními WordPress stránkami, ale jsou dynamicky sestavovány a obsahují klíčové moduly:- Orderbook: Interaktivní rozhraní pro obchodování mezi hráči, které zobrazuje aktuální nabídky. Umožňuje pokročilé filtrování podle kvality, speciálních vlastností (awakened traits) a řazení podle ceny či data vložení. Veškeré akce jsou řešeny asynchronně pomocí AJAX.
- Historické grafy cen: Integrace externí herní API pro vizualizaci vývoje cen předmětů pomocí knihovny Chart.js. Uživatelé mohou filtrovat data dle časového období, lokace ve hře a kvality předmětu, což jim poskytuje cenné nástroje pro analýzu trhu.
- Pokročilé vyhledávání (Omnisearch): Komplexní vyhledávací pole s našeptávačem, které na straně klienta dynamicky filtruje výsledky a umožňuje specifikovat úroveň (tier) a očarování (enchantment) předmětu přímo při psaní, což výrazně zjednodušuje orientaci v tisících herních položek.
- Vícejazyčná podpora: Web plně podporuje vícejazyčnost. Systém na základě uživatelských cookies automaticky překládá názvy předmětů do preferovaného jazyka, přičemž překlady jsou uloženy a spravovány v databázi pro maximální výkon.
Uživatelský portál a administrační systém
Po přihlášení přes Discord OAuth2 získává uživatel přístup do svého osobního „řídicího centra“, které funguje jako samostatná webová aplikace pro správu jeho obchodních aktivit.
- Správa nabídek (Dashboard): Uživatelský panel, kde může hráč spravovat své aktivní nabídky – upravovat cenu, množství, poznámky a dokonce i speciální vlastnosti u „Awakened“ předmětů. Dále může prodlužovat platnost nabídek, odstraňovat je nebo je označit jako prodané. Veškeré změny stavu (např. přijetí nabídky jiným hráčem) se díky WebSocketům projeví v reálném čase.
- Systém nabídek a protinabídek: Uživatelé mohou na existující prodejní a nákupní objednávky reagovat vlastními cenovými nabídkami, což podporuje dynamiku trhu.
- Komunikační systém (Chat): Plnohodnotný chatovací systém v reálném čase, který podporuje soukromé konverzace i globální chat. Uživatelé si mohou posílat obrázky a hlavně zasílat a přijímat obchodní nabídky přímo v rámci konverzace, což zásadně zjednodušuje obchodování. Systém rovněž zobrazuje online status uživatelů.
- Verifikace herních postav: Pro zajištění důvěryhodnosti tržiště musí uživatel projít vícestupňovým ověřovacím procesem, který komunikuje s oficiální herní API Albion Online. Proces zahrnuje vyhledání ID hráče, získání statistik o jeho herním postupu (fame) a následnou kontrolu v databázi, aby se předešlo duplicitám a ověření zakázaných účtů.
- Administrační rozhraní: Pro správce a moderátory byl vytvořen na míru šitý panel v administraci WordPressu, který umožňuje:
- Správu uživatelů: Přehled všech registrovaných uživatelů, jejich verifikovaných postav a možnost jejich zabanování. Funkce banování automaticky zneplatní všechny aktivní nabídky daného uživatele a zamezí mu v dalším přihlášení.
- Optimalizaci dat: Nástroje pro jednorázový import a zpracování herních dat z JSON souborů do databáze, hromadné stažení a cachování tisíců ikon předmětů pomocí cURL a jejich následnou kompresi a změnu velikosti pro zvýšení výkonu webu.
- Správu obsahu a modulů: Administrace vlastních typů příspěvků pro support manuály, changelog a správu tiketů přijatých od Discord bota.
Technické shrnutí a klíčové vlastnosti
- Architektura: Projekt využívá hybridní architekturu. WordPress slouží jako robustní základ pro správu obsahu a uživatelů (CMS), zatímco klíčové funkce jako tržiště, dashboard a chat jsou postaveny jako moderní webová aplikace s intenzivním využitím AJAX a REST API. Frontend se chová jako Single Page Application (SPA), což minimalizuje nutnost obnovování stránek.
- Komunikace v reálném čase (WebSockets): Pro zajištění okamžitých aktualizací je nasazen samostatný Node.js server s WebSockets (ws). Komunikace probíhá efektivně: WordPress plugin (PHP) odešle POST request na Node.js server, který následně rozešle zprávu pouze relevantním klientům přihlášeným v daných „místnostech“ (např. `live_listings`, `chat_user_123`), čímž se minimalizuje zbytečný datový provoz.
- Integrace API:
- Discord API: Pro kompletní proces přihlašování a registrace uživatelů (OAuth2).
- Albion Online API: Pro ověřování herních postav a získávání dat pro cenové grafy.
- Vlastní REST API: Rozsáhlé vlastní API slouží jako páteř celé aplikace. Poskytuje zabezpečené endpointy pro veškerou AJAX komunikaci (chat, správa nabídek) a také pro synchronizaci dat s externím Discord botem (synchronizace uživatelů, aktualizace statistik).
- Datová struktura: Pro ukládání velkého objemu transakčních dat (nabídky `adv_listings`, `adv_offers`; zprávy `adv_messages`, `adv_conversations`) byla navržena a implementována sada vlastních databázových tabulek. Tento přístup zajišťuje výrazně vyšší výkon a lepší relační integritu než použití standardních WordPress post types.
- Zabezpečení: Veškerá AJAX komunikace je zabezpečena pomocí WordPress nonces. REST API endpointy určené pro komunikaci s botem jsou chráněny tajným API klíčem v hlavičce requestu. Přístup do administrace je striktně omezen na základě uživatelských rolí a granulárních oprávnění (vlastní role „Moderator“). Přihlašovací stránka do administrace je navíc chráněna pomocí geo-blokace.
- Automatizace: Systém využívá WP-Cron pro pravidelné a automatizované úlohy údržby, jako je označování expirovaných nabídek, archivace starých záznamů pro udržení vysokého výkonu produkčních tabulek, synchronizace blacklistu z externí databáze a čištění prázdných konverzací.