Genshin Optimizer solves the artifact substat puzzle with a TypeScript monorepo
An Artifact optimizer for Genshin Impact(And other Gacha games).
At a glance
- What is it?
- The Gacha Optimizer repository is an MIT licensed Nx monorepo hosting several optimizer websites, including Genshin Optimizer and the alpha Zenless Optimizer, plus a Discord bot. It computes which artifact set actually min-maxes a character, it keeps its game data in a git submodule, and its published roadmap was last updated in February 2025.
- Who is it for?
- Genshin Optimizer fits a player who wants artifact sets compared numerically instead of by eye, and who is comfortable with a web app that is updated when the games change. It does not fit a developer looking for a library, since this is a set of hosted websites, and it does not fit a team that needs a maintained data pipeline, since the data arrives through a git submodule that the maintainers pull.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- frzyc/genshin-optimizer1,048 ★ · +10
| Repository | 2026-10-21 | 2026-11-07 |
|---|---|---|
| frzyc/genshin-optimizer | 1k | 1k |
10 Stars in the last 17 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
One monorepo hosts several optimizer sites, not one app
The repository opens by describing itself plainly: a repo hosting a few different optimizer websites for different gacha games. That is the shape of the project, and it explains most of the engineering decisions in it.
The Genshin Optimizer site is a helper website for the online action-rpg gacha game Genshin Impact, and it is intended to assist players with optimizing artifacts to max-min their characters, while providing a clean, structured UI and real-time results. The Zenless Optimizer is the equivalent for Zenless Zone Zero, and it provides basic disc optimization, which is the equivalent gear system in that game. Both are deployed as static sites, since the URLs are GitHub Pages addresses.
The roadmap lists two more efforts. SRO, described as GO but Star Rail, is the Honkai Star Rail equivalent with its own relic and lightcone data. Somnia-bot is a bot that gives access to Genshin data and to your GO builds from Discord.
The monorepo structure is Nx based, and the README explains the layout. Applications are in /apps, and dependencies for the apps can be found in /libs. There is also a plugin/ directory, a tools/ directory and a types/ directory at the root. The root package.json is marked private, and the version there is 10.39.0, which matches the version of the Genshin Optimizer app rather than the whole repository, a detail that matters when you look at the release tags.
The README invites you to run nx graph for a more interactive and detailed view of the project, which is the fastest way to understand a codebase this wide.
The calculation engine is called Pando, and for one game it is still unfinished
The roadmap is the most revealing document in the repository, and it is worth reading for what it marks as done and what it leaves open.
The last update was February 2025. For the Genshin Optimizer site, the commitments are that new characters and content will continue to be added as Genshin updates, and three items are struck through as delivered: an artifact upgrade damage probability calculator from Q1 2024, teams and loadouts from Q2 2024, and an optimal substat solver for TC mode from Q2 2024.
The Zenless Optimizer is labelled alpha. Its bare-bones optimizer is struck through as delivered in Q1 2025, while a new calculation engine called Pando, a team and combo system, and the complete addition of characters, discs and engines are all marked TBD.
For SRO, the picture is the mirror image. Pando and the team and combo system are struck through for Q4 2024, and the complete addition of characters, relics and lightcones is TBD. Somnia-bot has the data access from a bot and the Discord bot features struck through, with access to your GO builds marked TBD.
So Pando is the project name for the current calculation engine. It was completed for Star Rail by the end of 2024 and is listed as still to do for Zenless Zone Zero, and that is the concrete explanation for the alpha label on the Zenless site.
The gap between a roadmap last updated in February 2025 and a repository whose last push was in October 2026 is the thing a reader has to resolve: the code is moving, but the document that says what is planned is old.
Game data arrives through a git submodule, not an API call
The two scripts in the root package.json explain how the game data is managed, and they are unusual enough to call out.
git submodule update --init
git submodule update --remoteThere are also scripts for the main development commands, and they all go through Nx.
"frontend": "nx serve frontend",
"somnia": "nx serve somnia",
"build-all": "nx run-many -t build",
"test": "nx run-many -t test"The submodule is the data source. There is a.gitmodules file at the repository root, and the two commands are named reload-dm and update-dm, which is shorthand for data module. The pattern is a familiar one for game data: the numbers, character stats and item tables live in a separate repository, they change with every game patch, and pulling them in as a submodule keeps the main repository's history clean and makes the data update a single, reviewable operation rather than a large diff.
The consequence for a reader is specific. The data is not fetched at runtime and it is not scraped, so the correctness of every number in the optimizer depends on a submodule revision that the maintainers choose. If a game patch changes a stat and the submodule has not been pulled, the tool will confidently produce wrong answers, and nothing in the interface would tell you.
The technology list the README jokes about also includes Prisma and a GraphQL client, which hints at a database layer beyond the submodule, though the repository files alone do not explain how they fit together.
The problem being solved is comparing artifact sets numerically
It is worth being clear about what the tool does, because the name oversells it slightly.
In Genshin Impact, characters have artifacts, and each artifact has a main stat, a substat, and a level that determines how many substat rolls it has. The goal is to find, among the artifacts a player owns, the set that performs best for a given character, and the difficulty is that the value of an artifact depends on the substat rolls it happens to contain, so a nominally better set can be worse in practice.
That is the problem the Genshin Optimizer addresses. It assists players with optimizing artifacts to max-min their characters, provides a clean, structured UI, and provides real-time results. The emphasis on real-time is the differentiator against the community spreadsheets that have historically served this need, where you enter your inventory and wait for a calculation to finish. The Zenless site does the same for discs, at a more basic level.
The joke in the README about being the most over-engineered Genshin website ever made is not entirely a joke, given the stack list that follows it: React, MaterialUI, Nx, GraphQL, git, emotion, Prisma, Vite, nodeJS, Bun, sawk, webpack, Jest, tesseract.js, discord.js and TypeScript, with a request to distinguish which of those is a Pokemon. Sixteen or so technologies for a single-purpose site is a lot of moving parts, and it is the price of a codebase that serves three games and a bot from one tree.
Two version lines in one repository, and separate release tags
The release history shows why the monorepo is more awkward to release than it looks. The three most recent tags are 10.39.0 on 2026-10-06, 1.14.0+zo on 2026-09-29 and 10.38.1 on 2026-08-21.
The 1.14.0+zo tag is a different application, the Zenless Optimizer, with its own version line, and the +zo suffix is the marker that keeps it from colliding with the Genshin Optimizer's own numbering. The two apps share a repository, share libraries and share the data submodule, but they version independently, and the release tooling has to distinguish them.
The root package.json confirms the split in a second way. Its name is genshin-optimizer and its version is 10.39.0, which matches the Genshin app, not the repository as a whole, and the package is marked private so it is never published to a registry. The Zenless app has its own package inside /apps with its own version.
For a user this only matters in one place, which is the URL. The Genshin site is at frzyc.github.io/genshin-optimizer, the Zenless site at frzyc.github.io/zenless-optimizer, and the README's project website badge points at the former. For a contributor it matters a great deal, because the Nx graph, the shared libraries and the submodule mean a change to a shared calculation library can affect three applications and two release lines at once.
MIT licensed, community-run, and held together by a Discord
The licence is MIT, and it is recorded both in the root package.json and in the LICENSE file, with a licence badge in the README pointing at the same file. You can use, modify and redistribute the code, including commercially, provided the copyright notice and the licence text are kept. This is a licensing fact rather than legal advice, and for a community project it is the permissive end of the scale.
The project runs on community labour. The README's help section is framed as a question to web developers, asking whether you can distinguish which of the listed technologies is a Pokemon, and inviting anyone with knowledge of some of them to join the Discord, with the pitch of an actively developed app with thousands of users. Bug reports, features and translations all come from that community, and the maintainer ships a Discord server and a live community site.
The activity level is real. The repository is not archived, the default branch is master, and the last push was on 2026-10-21, days after the 10.39.0 release. The community channels include the Discord and an issue tracker with templates, and the repository carries the usual scaffolding for a large TypeScript project: a.nvmrc pinning the Node version, a.yarnrc.yml with the Yarn configuration, an.editorconfig, a biome.json for linting and formatting, a tsconfig.base.json for the shared compiler options, a vitest.workspace.ts for the test runner configuration, and a migrations.json for the database.
The honest assessment is that the roadmap document is behind the code. A reader should treat the commit log and the release tags as the real status, and the February 2025 roadmap as a statement of intent that has not been kept up to date.
Editorial conclusion
Genshin Optimizer fits a player who wants artifact sets compared numerically instead of by eye, and who is comfortable with a web app that is updated when the games change. It does not fit a developer looking for a library, since this is a set of hosted websites, and it does not fit a team that needs a maintained data pipeline, since the data arrives through a git submodule that the maintainers pull. Before adopting it, check the game data submodule and the recent commits for the game you play, because the value of the tool is entirely in whether its numbers match the current version of the game.
Frequently asked questions
What does the Genshin Optimizer actually compute?
It is a helper website for Genshin Impact that assists players with optimizing artifacts to max-min their characters, with a structured UI and real-time results. The Zenless Optimizer is the same idea for Zenless Zone Zero, providing basic disc optimization, and is labelled alpha.
How is the Gacha Optimizer repository organised?
It is an Nx monorepo where applications live in /apps and the dependencies shared by those applications live in /libs, with additional plugin/, tools/ and types/ directories. The README suggests running nx graph for an interactive view of the project.
Where does the game data for the optimizer come from?
The data is kept in a separate git submodule rather than fetched at runtime, and the root package.json provides two scripts for it: reload-dm runs git submodule update --init and update-dm runs git submodule update --remote.
What is Pando in the Gacha Optimizer roadmap?
Pando is the project's name for the new calculation engine. In the roadmap, last updated in February 2025, it is marked done for the SRO Star Rail site in Q4 2024 and still TBD for the Zenless Optimizer, along with a team and combo system and the complete addition of characters, discs and engines.
How do I run the Genshin Optimizer locally?
The root package.json defines nx serve frontend for the frontend app and nx serve somnia for the bot, with nx run-many -t build to build everything and nx run-many -t test to run the tests. There is also a mini-ci script that runs format, typecheck, lint and test across affected projects.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/frzyc-genshin-optimizer)Star history chart for your README
[](https://hysenlabs.com/projects/frzyc-genshin-optimizer)Was this useful?