Go Divine for just $7.99/month

September 2026 Development Update

Lee

Hello people. It's been seven months since the last devlog, so I thought I'd give an in-depth update on our progress since then.

We've been working on Duels+ throughout the year, but a lot of the work hasn't been particularly easy to turn into changelogs for you to read. However, I believe that we owe you insight into why the quality of Duels+ has degraded. This means you'll be reading about what's happened behind the scenes till now.

Duels+ 2.0

A large amount of work went into restructuring the codebase, then known as the beta branch. As Duels+ was originally developed in JavaScript, it was unorganized, unoptimized, and very difficult (nearly impossible, in fact) to scale. This was a challenge for us as we continuously implemented features from the roadmap, while our user count kept increasing.

legacy filetree

Therefore, a single team member took on the entire recode of Duels+ so Venxm could keep pushing updates to the publicly available Duels+ v1.x at the time, while I could work on everything else. The recode began on January 16, and we shipped a closed beta release on February 6.

Before development begun, I had explictly stated to the team that the rewrite should be done in a way that the end user does not notice any difference, and the point of the rewrite was that it should've been a change under the hood that would help towards the future of Duels+ without changing how the proxy worked in the slightest for you. That condition was not met.

The eventual rewrite split things into much smaller components, which turned out to be a bad decision.

filetree

The new codebase ended up being very different from the code that Duels+ had originally been built around. Some of the changes were much deeper than we initially expected, and as development continued, it became even more difficult for us to work on what had been rewritten.

As if that weren't enough, we had suspicions that the rewrite was entirely vibecoded, as there were many clear signs of AI:

rewrite comments

However, the team member said otherwise.

Plugins

Fast forward to v2.0.0, and we had a lot of things we wanted to work on.

Plugins were one of the biggest features we started working on, which would allow anybody to bring their own features and share them with the community. To make this happen, the Plugin API was being actively developed, after which the marketplace would follow.

However, the team member responsible for its development had quit midway through.

That left us in an awkward position, as we had already begun developing official plugins to distribute in the "future marketplace". Therefore, most of our development was limited to smaller fixes and patches.

The Duels+ team had discussed starting over and rewriting the proxy again from scratch with a strict no-AI rule. Thing is... Hypixel Duels is a niche community, and Duels+ is an even smaller project within that. Another rewrite would take a huge amount of time & effort which we cannot dedicate given the tradeoffs.

Performance!

Since I'm unable to work on any major features, I've done my best to optimize the existing feature set we provide, as well as the infrastructure we run on.

When you launch Duels+, the runtime usually has to load every single module before letting you connect. I've separated the essential modules from the QoL ones and implemented lazy loading so the QoL modules can take their time in the background. I've also made sure that the initial API requests do not slow down the startup process.

Previously, our Postgres database (the place we store your data) was hosted on a small server in London while the rest of our services were elsewhere. I've since moved the database to our larger server in Germany.

All of our microservices also now communicate with each other over the internal Docker network, which improves the latency on all operations.

Lastly, the primary database was upgraded to PostgreSQL 18. Since we use PgBouncer in front for connection pooling, queries should be near instant.

Disaster recovery

Until now, nobody had ever brought up how necessary automated backups are. We've set up rolling backups of the entire database every six hours, with three months of retention.

We used to manually dump the database every now and then and keep local replicas, so this may just be the best change we've done in a long time.

Monitoring

In addition to health checks on all services, we've implemented different systems that let us monitor API traffic in real time and notify us when requests spike.

monitoring

We've also added error reporting to the proxy itself (and other services) via a Sentry-like flow so we can receive and troubleshoot issues as they happen.

What's next?

The immediate focus is continuing to improve the reliability of what we have. There's obviously a lot we'd like to do with Duels+, but we still need to think about how we'd pull this off.


And hopefully the next devlog won't take this long.

Cheers,
-Lee