OldSchool.tools is one of the largest websites dedicated to the classic online game Old School RuneScape. During the 7 years since launching this project, I've had the pleasure of helping millions of visitors and it remains the most popular fan-owned website for the game.
OldSchool.tools has existed in several iterations, beginning at the very start as a WordPress site with mainly text content. Over time, more complex tools and calculators became the focus on the site, and a transition was made to Laravel + React.js. Further strategic changes led me through transitioning the site to CraftCMS, and then back to Laravel + Vue.js while maintaining a headless CraftCMS installation which provides a means to manage textual content on the website. These changes have provided me great opportunities to explore new technologies along with giving me experience in making fundamental changes to existing projects incrementally and without downtime.
In addition to the forward facing functionality seen on the website, I also maintain a variety of scripts and microservices which automatically monitor various websites and APIs for new information which can be used to patch my database of items used on the website. These tools maintain an ongoing log of changes and help to maintain the website by reducing the man hours spent on various updates. Data from the microservices is consumed by the primary application via API calls. This allows me to separate the concerns of the primary application, which can function as a simple monolith, from the ongoing fetching, processing, storing, and management of large amounts of data that is instead delegated to the most appropriate dedicated service. To aid in performance on the website, pages are strategically rendered to static HTML and cached.
7DaysMap.com is a simple open-source project that utilizes the Leaflet.js library to provide an interactive map for the survival game 7 Days To Die.
7DaysMap.com is a small project built on top of Laravel and using Leaflet.js on the front end. In addition to this, I maintain a private Node.js script that utilizies various image processing libraries to take a full-sized export of the world map, resize it to various zoom levels, and then split it into hundreds of thousands of map tiles for use on the website.
OsrsApi.com is a currently private API providing easy access to a number of useful data collections related to OSRS.
OsrsApi.com provides a simple website that allows user to register and create API tokens for accessing our API. They can then use these tokens to makes requests for various information to help with the construction of OSRS-related tools or for whatever other projects they may have in mind. The project uses a series of scrapers to mine information from public sources, including the official wiki, and then processes those into a format that can be more easily consumed by software. This project helps power the OldSchool.tools website. Although currently private, I may open the API up for public consumption in the future.
Tcg Guru is an online database for trading card games - mainly Yu-Gi-Oh. It provides an elegant database of cards and the ability to create public or private lists, decks, collections, and more.
Tcg Guru is a single-page application built with Laravel on the backend and Vue on the frontend. It uses a series of custom-built scrapers and 3rd party APIs to gather, consolidate, organize and store data related to the hundreds of thousands of variations of cards that it tracks. This information is presented to the visitor in an easily consumable format and the website allows users to register, save lists, build decks, track collections, and interact with the data in many different ways.
Restless Blade is a real-time online browser-based game that let's players build up the strength of their character, fight monsters, form a clan, and build up estates.
Restless Blade is an advanced project that utilizes nearly all capabilities of the tools that it's written with. It allows players to interact with one-another in real-time, allowing them to work together to build clans, trade items with one another, fight monsters, and much more. It's built around a core mechanic which allows players to have their characters complete tasks even when they're not online. These tasks include anything from gathering resources, to fighting enemies, to building on their estates.
The task system mentioned above is implemented by using a series of delayed jobs in Redis. Jobs will process over time, recursively re-queueing themselves as needed and allowing the character to complete tasks over time in 6-second increments. Websockets are used extensively to allow communication between the client and server as well as between other players.
This project attempts to create a simple architecture while allowing different parts to be scaled up as required. Included in this is: