A website and admin for Wrath of the Lich King realms
Runeforge
Runeforge runs a realm's website. It keeps the news and the pages, draws the Armory, counts the visitors, holds the polls and the players' accounts, and can send a few commands to the realm itself.
It's made for realms on AzerothCore 3.3.5a, and it knows them. An item on a page is the realm's own item, with the tooltip the game shows. A character in the Armory is drawn from the game's own models.
1Writing
Posts are lists of blocks
A post is built from blocks: text, headings, pictures, galleries, YouTube videos, callouts, item cards, tables, two columns, spoilers, quotes, buttons, dividers and polls. Each one is added where it should go, and dragged if it should go somewhere else. On a wide screen the real site sits beside the editor and shows the post as it will look, changing as you type.
Text is markdown. Writing {{item|49623}} puts the realm's own item in the post, in its colour, with the tooltip the game would show it with (figure 2).
{{item|49623}}, read from the realm when this page opened.- Kinds of block
- 15, each checked on the server and drawn by the same code in the editor's preview
- History
- The last 30 saves of every post, any of which can be brought back
- Scheduling
- To the minute. A scheduled post goes up on its own.
- Videos
- Nothing is loaded from YouTube until a visitor clicks to play
2Pages and menus
Pages, and the menus that lead to them
Pages of your own, such as Rules or a FAQ, get an address like /rules and are built from the same blocks as posts. Pages a site draws in its own code, like the eleven of Tales of Wrath's Game Guide, can still have their banner and introduction changed, blocks placed above or below their own content, or be taken off the site and put back later.
The bar under the logo, a drop-down menu with its own page of tiles, and the links in the footer are lists in the admin. A link to a page that's switched off drops out of every menu by itself.
3The Armory
Characters drawn the way the game draws them
Every character on the realm has a page laid out like the game's character window, with the game's own icons in the slots and its tooltips on the items.
In the middle stands the character. Runeforge takes the race's body model from the game client on the server, poses it standing, and shows the hair, beard and armour that the character's look calls for. It paints their skin, face and every piece of armour into one texture, in the order the client paints them, and puts the helm, shoulders and weapons where the body holds them. Transmogrified items show their new look, and a hidden helm stays hidden. Your browser draws the result itself; nothing is loaded from anywhere but this site.
Asking the realm for a character…
4Players and the realm
One account, and a line to the realm
Creating an account on the site makes a game account, checked the way the game checks it, and anyone who already plays logs in with the account they have. A player's page lists their characters on each realm and the bug reports they've sent, with the team's answers.
Polls take one vote per game account. The Hall of Fame ranks each realm's best by achievement points, honorable kills and the first to reach level 80; on Tales of Wrath it ranks the systems that realm adds, too.
From the admin, Runeforge can announce to a realm, send mail with gold and items, and mute, kick, ban or unban an account, and on Tales of Wrath it posts in the News window that realm adds to the game. These reach the realm as console commands, over a connection the realm accepts only from the machine it runs on.
announce The Scourge stirs near Icecrown.
wrathplus news post patch Patch 1.4 | The Saga's third chapter is open.
send money Varian "For the war chest" 5000000
mute Grimtusk 30 Spamming Trade
5The look
The site's look is a setting
The art behind the header, and which part of it stays in view on a phone. The word on the logo. The gilding of the big headings, and the colours of links and highlights. The days each holiday decorates the site, or a holiday left out altogether. None of it means touching code.
6Keeping it safe
What it won't let a stranger do
- Admins sign in with a password and, once they turn it on, a code from an authenticator app.
- The admin opens only from the home network, even after the site is on the internet.
- The site reads the realm's database through a login that can only read, and only the tables it shows.
- Game accounts are made and checked through a few stored procedures. The site never sees a password verifier, and can't change a GM's account.
- Too many wrong passwords lock an address out for a while, and every change and sign-in goes in the activity log.
- Visitors are counted without cookies. A visitor is a hash whose salt is thrown away every day, so nobody is followed from one day to the next.
7Running Runeforge
Sites that run on Runeforge
Every site that runs on Runeforge is its own: its own name, look, pages and realms. These are the ones running it now.
This website
Tales of Wrath
The Lich King's war, continued
Visit the site →
Tales of Wrath is where Runeforge was first written, and where every part of it is tried before anything else.
8Getting Runeforge
Not out yet
Runeforge isn't available to download yet. It runs one site today, and the plan is for any realm to be able to use it for its own project.
Before that, the parts that only Tales of Wrath has (its Game Guide pages, its News window, its own systems in the Hall of Fame) have to become things a site can switch on, and setting it up has to be as simple as pointing it at a realm's database and client. When it's ready, it will be on this page first.
·Colophon
How it's made
Runeforge is plain Node.js with no packages: about twelve thousand lines, all of them its own. The pages use nothing but the browser's own APIs, and the 3D viewer is some 240 lines of WebGL.
The content is kept as plain JSON files. Each is written to a temporary file first and then moved into place, so a crash never leaves half of one. The game's own formats, DBC tables, M2 models and BLP textures, are read directly, without converting anything by hand.
It was first written in 2026, for Tales of Wrath, and runs that site from a mini PC beside the realm.