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
Tags
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
.icsfile and awebcal://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
| Source | What it provides | Integration method |
|---|---|---|
| Guild Roster Manager addon | Roster snapshots, rank history, character metadata | Lua SavedVariables parsed by PowerShell, POSTed as JSON |
| Raid-Helper | Events, signups, attendance, raid templates | REST API (reads + writes) and webhook callbacks |
| wowaudit | Weekly vault, item level, gear progress per character | REST API, polled on a schedule |
| Raider.io | Mythic+ scores and recent runs per character | REST API, polled on a schedule |
| Warcraft Logs | Raid performance reports and log links | GraphQL API |
| Battle.net | Character data, realm and faction info | OAuth2 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.