Hypixel Quest Calculator
- React
- FastAPI
- Docker
React Web Application that calculates when a player will reach a Hypixel network leveling goal, based on the quests and challenges they plan to complete daily and weekly.
Motivation & Background
Hypixel is a minigame server for Minecraft—it is the largest Minecraft server. I have been involved in the community for several years, and because they offer a lot of data through their api, there are numerous projects (web apps, discord bots, and in-game mods) that have inspired me to learn and apply the same skills over the past few years.
On Hypixel, players can complete daily and weekly quests to earn in-game rewards, like coins or, notably, network-wide experience points, which increase a user’s level. By achieving higher levels, players earn in-game rewards like temporary coin multipliers, as well as cosmetic items.
Questing is one of my favorite parts of the game, because it offers variety, as it encourages playing many different minigames, instead of just one or two, like many players do. I created this tool to calculate when a player will reach a leveling goal based on the quests they want to complete daily and weekly, which is complicated without a calculator since leveling is not linear.
Performance
The most challenging aspect of the project was definitely optimizing API queries and caching. The calculator uses data from two separate API services (the Mojang API, used to query player IDs from their usernames, and the Hypixel API), and multiple endpoints on the Hypixel API. One endpoint fetches the quest data—which quests exist, what are their names, and how much XP do players earn by completing them—and the other fetches the player’s current level.
To optimize these queries, both client-side and server-side caching was used. On the client side, all queries are cached using TanStack Query, and in the FastAPI backend, queries are cached using Redis. Since players can only change their usernames every month, the Mojang API queries are cached for six hours, as well as the quest data itself—which will only change for occasional server updates. Finally, each player’s data is cached for just one minute, as it is important to show users recent data, but it is also important to avoid hitting rate limits with the Hypixel API.
Finally, the quest data is prefetched when users enter the homepage of the site, because that data will always be the same, no matter which player they look up—this usually saves a network request.
All of these optimizations add up to make a very speedy site. Another popular questing tool, Notifly takes around 4.5 seconds to fetch a player from my network, while my site (which fetches the same data, but serves a different purpose) takes just 250 milliseconds for a similar query.
Deployment
To deploy the app, I used Coolify and Docker. Coolify is a self-hosted platform as a service (PaaS), which made it easy to deploy the docker containers I created for the frontend and backend. It has built-in continuous delivery (CD), so every time a commit is pushed to the main branch of the GitHub repository, the containers are rebuilt and the site is automatically redeployed.
I was introduced to Coolify by a teammate at BlasterHacks 2025, where we used it to deploy the backend for HairBase.