Nemesis Rewards Calculator
2026
Finds the cheapest way to back Nemesis Legacy on Gamefound for exactly what you want.


The campaign sells four games through dozens of pledges, bundles and add-ons that overlap, so the cheapest way to get a given set of items is rarely obvious, and shipping, VAT and currency all move the final bill. Backers switch on what they want; the calculator returns the cheapest combination, the full price and the exact cart lines to add.
How it’s built
- Nuxt 4 and Vue 3
- Every page is generated to static HTML at build time and hydrated in the browser. There is no server: all the working-out happens client-side.
- TypeScript, at its strictest
- The catalogue, classification, shipping, tax, solver and quote are plain typed modules kept apart from the UI, with every optional compiler check on and CI failing on a single lint warning.
- An exact set-cover solver
- Choosing what to buy is a weighted set-cover problem. A recursive search decides one bundle at a time and splits what is left into independent sub-problems per game, so it finds the true optimum in about a millisecond and reruns on every click.
- Bun
- Package manager, script runner and test runner. The tests check the solver against a brute-force search over random selections, and fail if Gamefound adds a product the classifier does not know.
- A capture-and-build data pipeline
- Gamefound turns scripts away, so a browser-console script captures the catalogue; a Bun script then builds the shipped catalogue and fetches the product images, optimised with sharp.
- Nuxt UI and Tailwind CSS
- Components and four switchable themes, one per game, restored before first paint so there is no flash of the wrong colours.
- Frankfurter API
- Central-bank exchange rates for 27 currencies, fetched by the browser, falling back to the rates captured with the catalogue.
- GitHub Actions and Pages
- CI runs lint, formatting, type checks, tests and a full build on every pull request; pushes to main deploy to its own domain. Pages cannot send headers, so each page carries a Content Security Policy with a hash for every inline script.



