Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

blessedrabies/wow_armory

Repository files navigation

WoW Classic Armory

A comprehensive World of Warcraft Classic companion web app — character armory, raid statistics, server population tracking, and a community trading board.

Built for WoW Classic 20th Anniversary servers, with support for multiple regions and game versions.

Features

  • Character Armory — Search characters across KR, US, EU, CN, TW, and OC regions (Classic Era & Classic 20th Anniversary)
  • Equipment Display — Full gear layout with quality-based coloring, item tooltips, and enchant info
  • Talent Tree Visualization — Interactive ×ばつ4 talent grids for all 9 Classic classes, sourced from Wowhead
  • Character Stats — Complete stat breakdown (attributes, melee/ranged/spell, defense, resistances)
  • Raid Statistics — Global participation stats for Naxxramas and Ahn'Qiraj 40 by region and phase
  • WarcraftLogs Integration — Character parse rankings and raid performance data
  • Server Population Tracking — Real-time and historical Alliance/Horde population charts, updated every 15 minutes via an in-game addon pipeline
  • Community Trading Board — Item, gold, and service trade listings
  • Multi-language UI — 11+ languages supported

How Population Data Works

This project uses a custom pipeline to collect real server population data — not estimates.

[WoW Game Client]
 PopulationTracker addon (Lua)
 └─ Reads LFG channel user count every 5 min
 └─ Stores in WoW SavedVariables (per account)
 │
 ▼
[Local Machine]
 scripts/population/auto-pop-sync.js
 └─ Parses SavedVariables .lua files from Alliance & Horde accounts
 └─ Filters to time slots where both factions have data
 └─ Normalizes to 5-min intervals, deduplicates
 └─ POSTs to /api/wow-population
 │
 ▼
[Web / Database]
 PostgreSQL (WowPopulation table)
 └─ Displayed as Alliance/Horde charts on /population page
 └─ 15-minute granularity in the UI

In-Game Addon (wow-addon/PopulationTracker/)

A lightweight WoW Classic addon written in Lua that passively monitors the Looking For Group (LFG) channel population count.

  • Samples LFG channel user count every 5 minutes automatically
  • Saves data to WoW's SavedVariables system (account-level, shared across all characters)
  • Supports multiple accounts simultaneously (Alliance + Horde)
  • Skips recording when the channel count is 0
  • Keeps up to 2,000 records per account (oldest entries auto-deleted)
  • Data is written to disk on /reload, character switch, or game exit

Collected fields per sample: timestamp, character, realm, faction, level, lfgCount

In-game commands:

Command Description
/pt or /pt help Show help
/pt on / /pt off Enable/disable tracking (account-wide)
/pt char Toggle tracking for current character only
/pt now Manually record current population
/pt stats View statistics (avg/max/min, session info)
/pt export Print last 20 records in CSV format
/pt clear Reset all stored data
/pt interval Check current recording interval

Tip: If you play multiple characters at the same time, use /pt char on alts to disable per-character recording and avoid duplicate entries.

Installation: Copy wow-addon/PopulationTracker/ into your WoW Interface/AddOns/ directory.

Sync Script (scripts/population/auto-pop-sync.js)

Reads the SavedVariables .lua files from each WoW account directory and uploads the data to the web API.

# One-time sync
node scripts/population/auto-pop-sync.js once
# Preview what would be uploaded (no actual upload)
node scripts/population/auto-pop-sync.js preview
# Continuous monitoring mode (checks every N seconds)
node scripts/population/auto-pop-sync.js monitor 60

Windows shortcuts are provided in scripts/population/:

  • sync-once.bat — one-click sync after logging out of WoW
  • preview.bat — preview data before uploading
  • sync-monitor.bat — auto-sync every 60 seconds

Configure your WoW account paths in auto-pop-sync.js:

const LUA_PATHS = {
 alliance: [
 'C:/Program Files/World of Warcraft/_classic_era_/WTF/Account/YOUR_ACCOUNT/SavedVariables/PopulationTracker.lua',
 ],
 horde: [
 'C:/Program Files/World of Warcraft/_classic_era_/WTF/Account/YOUR_HORDE_ACCOUNT/SavedVariables/PopulationTracker.lua',
 ]
};

Only time slots where both Alliance and Horde data exist are uploaded, ensuring paired accuracy.

Tech Stack

Category Libraries
Framework Next.js 16 (App Router, Turbopack), React 19, TypeScript 5
Styling Tailwind CSS 4, Radix UI, Lucide React
Database PostgreSQL, Prisma 6 (with Prisma Accelerate)
External APIs Blizzard API (OAuth2), WarcraftLogs API
Scraping Puppeteer, Cheerio, Axios
Charts Chart.js, react-chartjs-2
Analytics Google Analytics, Google AdSense
WoW Addon Lua (WoW Classic API)

Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database (or Prisma Postgres)
  • Blizzard API credentials — register here
  • WarcraftLogs API credentials (optional, for parse data)
  • WoW Classic client (optional, for population data collection)

Installation

git clone https://github.com/blessedrabies/wow_armory.git
cd wow_armory
npm install

Environment Variables

Create a .env.local file in the project root:

# Blizzard API
BLIZZARD_CLIENT_ID=your_client_id
BLIZZARD_CLIENT_SECRET=your_client_secret
# WarcraftLogs API (optional)
WARCRAFTLOGS_CLIENT_ID=your_client_id
WARCRAFTLOGS_CLIENT_SECRET=your_client_secret
# Database
DATABASE_URL=postgresql://user:password@host:5432/dbname
# Analytics (optional)
NEXT_PUBLIC_GA_MEASUREMENT_ID=G-XXXXXXXXXX
NEXT_PUBLIC_GOOGLE_ADSENSE_ID=ca-pub-XXXXXXXXXXXXXXXX

Database Setup

npx prisma generate
npx prisma migrate deploy

Run Development Server

npm run dev

Open http://localhost:3000.

Project Structure

/app
 /api # API routes
 /character/[realm]/[name] # Character data (Blizzard API)
 /raid-stats # Raid statistics
 /wow-population # Population data ingestion & query
 /warcraftlogs # WarcraftLogs integration
 /community # Trading board posts & comments
 /character/[realm]/[name] # Character detail page
 /raid-stats # Raid statistics dashboard
 /population # Population charts & history
 /community/trade # Community trading board
 /privacy, /terms # Legal pages
/components
 TalentTreeNew.tsx # Interactive talent tree
 ItemSlotShadcn.tsx # Equipment slot with tooltips
 StatsPanelShadcn.tsx # Character stats display
 PopulationChartJS.tsx # Alliance/Horde population charts
 WarcraftLogsDisplay.tsx # Parse rankings display
/lib
 blizzard-api.ts # Blizzard API client
 wowhead-talent-encoder.ts # Talent build → Wowhead URL encoder
 all-classes-talents-bilingual.ts # Talent data for all 9 classes
/scripts
 /population
 auto-pop-sync.js # Main sync script (SavedVariables → API)
 pop.js # Manual population entry
 read-population-data.js # Read & analyze SavedVariables data
 sync-once.bat # Windows: one-click sync
 sync-monitor.bat # Windows: auto-sync every 60s
 preview.bat # Windows: preview before upload
 backup-database.js # DB backup utility
/prisma
 schema.prisma # DB schema
 /migrations # Migration history
/wow-addon
 /PopulationTracker
 PopulationTracker.lua # Addon main file (Lua)
 PopulationTracker.toc # Addon metadata
 chatchannels.lua # Channel detection helpers

Database Schema

Model Purpose
SearchLog Character search analytics
WowPopulation Alliance/Horde population samples over time
RaidStatistics Class/spec participation by region & phase
Post Community board posts
Comment Nested post comments
Survey User polls

Scripts

npm run fetch-talents # Fetch talent descriptions from Wowhead
npm run fetch-wowhead # Fetch localization data
npm run fix-encoding # Fix character encoding issues
npm run lint # ESLint

Deploy

This app is deployed on Vercel. Set the environment variables listed above in your hosting platform.

License

This project is for educational purposes. World of Warcraft and Blizzard Entertainment are registered trademarks of Blizzard Entertainment, Inc.

About

WOW Classic Armory

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /