Diablo.Trade

VolunteeringDiablo.Trade

Introduction

Diablo.trade is a popular website and trading platform specifically designed for the game Diablo 4.

Its primary purpose is to facilitate trading between players by providing a central marketplace where users can list items they want to sell or trade, and search for items they want to buy or acquire.

Think of it as an auction house or trading post for Diablo 4, but outside of the game itself.

Involvement

While I was working at my last job, I happened to play a lot of D4 in the evenings and became a user of that website myself. Getting frustrated by some of the design decisions, I contacted them giving clear details on everything I did not like and what I would change. Ordering my suggestions by priority and giving examples of similar websites such as pathofexile.com/trade or specific component implementations/ergonomic concerns.

To my surprise they reached out to me and asked if I wanted to be a part of the website team to contribute, which I agreed to.

I took part in a short interview process and went on with the onboarding, after signing a NDA specifically about Blizzard D4 features which we would be aware of before launch in order to get the website ready ahead of time.

Being a member of an international team working around such a popular game was a very interesting experience. Seeing your work make an immediate impact on the player base when you fix a particularly annoying bug is refreshing and made me empathize better with game developers even as I was simply working on an affiliated website.

I mainly got involved in fixing every frontend issue I could find on the team's clickup (issue tracker) and creating pull requests accordingly. Some of them had to do with ui consistency and accessibility, some of them with adding new features to the massive item filter.

Technologies

Next.js, Tailwind, tRPC, Jotai, WebSockets (chat integration), NextAuth.js, MongoDB and probably a few more I did not get much into like OCR in order to recognize the screenshot of an in-game item and extract its properties.

Purpose

I did not really expect to be invited as a contributor when I sent my message, so I would say that I went along with the opportunity that presented itself at that point.

My goal then was simply to be useful and learn as much as I could from an entirely new codebase. At that point I had only experienced small projects during my time learning at O'Clock, as well as one decent-sized codebase at work (although using less modern approaches on some repos).

I had no experience with end-to-end API typing with tRPC or the use of a state management library such as Jotai at a decent scale (I did have experience implementing redux at work on a smaller scale). Getting to know these by directly wrestling with them in a living current project with actual performance considerations was very enlightening.

Lessons learned