This is the user-facing web site code for Undermine Exchange, which provides historical auction pricing data for World of Warcraft.
This is one of three layers to this application stack:
- Project Shatari - Data - Parses static game data into JSON files used by other layers. Run from a development environment.
- Project Shatari - Back End - Regularly consumes dynamic API data into custom-format data files consumed by the front end. Run on the server.
- Project Shatari - Front End - Presents the web interface to the application which consumes data from other layers to render the output. Serve via HTTPS.
This site is developed as a "static site," in that incoming requests to the server are not processed via PHP, node.js, or any other scripting language. Nginx is intended to serve all files as they are stored on disk.
The back end repository (linked above) will be running in the background to update files in-place on disk, but otherwise it does not interact with incoming requests in any way.
Compared to a dynamic, server-side scripting setup, this design provides more consistent low-latency performance, and scales well with high traffic.
/index.htmlis the main HTML page with a basic layout./srccontains the JS and SCSS source./src/js/main.jsis the main JS entry point, and loads all other JS files as required./src/scss/main.scssis the main SCSS entry point, and includes all other SCSS files as required.
/publicis a collection of static assets copied to/distat build time./public/fontscontains fonts used by the site./public/imagescontains all the various images used by the site./public/power.jsis a local copy of Wowhead's tooltip script, slightly modified./public/highstock-*.jsis a local copy of Highcharts Stock
/distis served by nginx (under the/root path) and is wiped and reset with each build./jsonis served by nginx (under the/jsonpath) and contains static JSON data provided by the Data repository linked above./json/realmsis gitignored, but expected to point at the/realmsdirectory in the back end repo location.
/datais served by nginx (under the/datapath) and is a symlink to the directory where the back end process stores the auction statistical data./oriboscontains some public migration support pages for when Undermine Exchange was renamed from Oribos Exchange, and moved from another domain.
- Run
npm installto download dependencies. - Run
npm run devin your development environment to load a local server with live changes. - Run
npm run buildin production to wipe and fill the/distdirectory with compiled files.
Thanks to Wowhead for providing tooltips and icons.
Click here to support my WoW projects:
Copyright 2026 Gerard Dombroski
Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
