Regenesis โ€“ Guild Officer Dashboard

← Back to Portfolio
Regenesis โ€“ Guild Officer Dashboard

Apr 2026 โ€“ Present

Officer dashboard for the Regenesis (Silvermoon-EU) WoW guild. Pulls roster history from an in-game addon, attendance and event data from Raid-Helper, character progress from wowaudit and Raider.io, and renders the lot as Discord-role-gated widgets with a built-in event creator that publishes back to Raid-Helper and out to Google Calendar.

Tech Stack

Laravel 12 PHP 8.4 MySQL Blade Alpine.js Chart.js Tailwind CSS Vite Discord OAuth Battle.net API Raid-Helper API wowaudit API Raider.io API Warcraft Logs GraphQL PowerShell Pest 3

Tags

Web Gaming Laravel

About this project

The challenge

Running a serious progression guild means juggling a constant stream of information: who turned up, who signed, who's still gearing up, what the schedule looks like this week, whose BiS piece just dropped in the vault. The Regenesis officer team were doing all of that by hand, hopping between Discord, the in-game roster, Raid-Helper, a handful of gear-tracking sites, and Warcraft Logs. The goal was a single Discord-gated dashboard that pulled everything into one place and let officers act on it without leaving the tool.

What it does

Roster and member data

  • The in-game Guild Roster Manager addon exports a SavedVariables file. A PowerShell Scheduled Task on the GM's PC parses the Lua table, normalises it, and POSTs a snapshot every thirty minutes.
  • Each snapshot is diffed against the previous one, producing a stream of join, leave, promote, and demote events. Those events drive the Action Queue, the rank-distribution donut chart, and a twelve-week churn timeline.
  • Member profiles pull live scores and recent Mythic+ runs from Raider.io, season progress and vault state from wowaudit, and base character data from the Battle.net API.

Events and scheduling

  • Officers create raids from inside the dashboard; it writes back to Raid-Helper via their API, then receives Raid-Helper webhook callbacks for the full lifecycle: signups, edits, and deletes.
  • Each event gets a per-event HMAC-signed .ics file and a webcal:// subscription feed, so officers can subscribe from Google Calendar without any third-party intermediary.
  • A drag-and-drop event creator lets officers pick a template, set dates and capacity, and publish to Raid-Helper in one action.

Team pages and performance

  • Dedicated pages for the Heroic and Mythic progression teams, the Key Night Mythic+ group, and Social events; each page surfaces signups and attendance history drawn live from Raid-Helper.
  • Warcraft Logs reports are embedded directly, pulling the guild's recent logs via the WCL GraphQL API so officers can review performance without switching tabs.

BiS comparison

  • Best-in-slot tracking uses SimulationCraft data. Officers can see at a glance which team members are missing key pieces from the current tier and who got an upgrade this week.

Admin tooling

  • Team mapping (who belongs to which raid group), schedule management, and Discord role configuration all live behind an officer-only admin section.
  • A data-sync panel shows the last successful ingest timestamp for each external source, plus a webhook log with every Raid-Helper callback and its processing status.

Data sources

SourceWhat it providesIntegration method
Guild Roster Manager addonRoster snapshots, rank history, character metadataLua SavedVariables parsed by PowerShell, POSTed as JSON
Raid-HelperEvents, signups, attendance, raid templatesREST API (reads + writes) and webhook callbacks
wowauditWeekly vault, item level, gear progress per characterREST API, polled on a schedule
Raider.ioMythic+ scores and recent runs per characterREST API, polled on a schedule
Warcraft LogsRaid performance reports and log linksGraphQL API
Battle.netCharacter data, realm and faction infoOAuth2 REST API

How it was built

Laravel 12 on PHP 8.4, deployed to Hostinger shared hosting, which brings its own constraints: no Node on the server, no Lua interpreter, a 30-second PHP timeout. The Lua table parsing for GRM runs locally on the WoW PC; Vite build artefacts are git-tracked so a plain git pull deploys cleanly without a build step on the server. The UI is Blade with Alpine.js and Chart.js, Tailwind via CDN. Discord OAuth gates access with a three-tier permission ladder (GM, Big Six, Officer) wired through Laravel Gates.

Tests are Pest 3, covering the GRM parser, the ingest pipeline, Discord auth flow, the webhook receiver, and the iCal builder. Deploy is a PowerShell script that builds assets locally, pushes the branch, then SSHes in to run deploy.sh (composer install, migrations, queue restart, health-check ping).

Status

Live and in daily use by the officer team since April 2026. Active development continues: a full roster-table page with filtering, granular per-tier permission gates beyond the current flat Officer check, a farm planner, and death-cause tracking from Warcraft Logs are all in progress.