Backend Engineer
About the Project
When a new Diablo season or Path of Exile league drops, millions of players open Maxroll before they start to play.
Maxroll.gg, part of IGN, is the go-to companion for RPG players, with over 25 million visits a month. We cover Diablo IV, Path of Exile 1 and 2, Lost Ark, Last Epoch, World of Warcraft and more, with expert guides, build planners and deep game databases. Launch days bring massive traffic spikes, and every player expects fresh, accurate data instantly. Keeping that fast is the job.
If you’ve ever spent an evening min-maxing a build, you already know our users.
Everything runs on one TypeScript stack:
- a Remix frontend over headless WordPress
- a planner service for player builds
- background jobs for game data, search, analytics and revenue
- a new game data platform with a keyed API and a published React SDK
We validate at the boundary and derive everything else. Zod checks all data coming into the system, and types flow from the database table through to the React component. Strict lint rules block any and as. Anything important is covered by a lint rule or a build check, so a rename breaks the build, not production.
The Work
You will be:
- APIs: building and maintaining REST and GraphQL APIs in TypeScript (Fastify, Hono) for user profiles, subscriptions and game data. This includes authentication, rate limits and typed contracts.
- Databases: designing schemas and writing queries for PostgreSQL and MySQL (Prisma, Drizzle). The data includes versioned game data and player-made builds, and the migrations run on tables that are in live use.
- Analytics: running our ClickHouse pipelines: per-request logs rolled up over time with materialized views, article and revenue metrics, and the queries behind our dashboards.
- Caching: owning the cache layers end to end: Redis-compatible stores, query caching, a tag-invalidated cache, HTTP cache headers, and CDN purges when content changes.
- Background jobs: building and running scheduled jobs and queue consumers (NATS). They sync game data, leaderboards and in-game events, index content in Meilisearch, generate sitemaps, and process Stripe webhooks, payouts and data-deletion requests.
- Integrations: working with third-party APIs such as Stripe, Discord, Blizzard, IGDB, Steam and YouTube, handling retries, backoff and their rate limits.
- Media pipelines: processing game images into map tiles, sprite sheets and responsive image sizes.
- Performance: keeping responses lean for our Remix and Next.js pages, because payload size and time to first byte affect PageSpeed and SEO. You'll also change React code when a feature reaches into the frontend.
- AI agents: working with AI coding agents (Claude Code, Cursor) every day. That means directing them, reviewing their output, and maintaining the guardrails that make their changes safe to merge (tests, lint rules, build checks, agent instructions).
- Shipping: deploying through Docker, GitHub Actions and Kubernetes.
Technical Stack / Requirements
- 5+ years of backend experience with TypeScript on Node.js (Bun is a plus)
- A strong command of TypeScript's type system: generics, inference, discriminated unions and narrowing, plus schema validation with Zod or similar
- Strong SQL on PostgreSQL and/or MySQL: schema design, indexing, reading query plans, migrations on live data, transactions and locking
- Experience running an analytical database at production volume (ClickHouse preferred; BigQuery, Druid or similar also counts)
- Experience designing caching: Redis or a compatible store, invalidation strategies, HTTP caching headers, CDN behavior
- Experience designing and consuming REST and GraphQL APIs, including authentication and rate limiting
- Experience with background jobs and message queues, including what should happen when a job runs twice or not at all
- Experience on a production, high-volume, user-facing application
- Experience leading a product from inception to production
- Daily, hands-on use of AI coding tools (Claude Code, Cursor or similar) in a real codebase, and a clear sense of when their output needs checking
- Comfortable reading and changing React code when a change crosses into the frontend
- Passion for gaming
Nice to have
- shadcn/ui and Tailwind CSS
- Our current stack: Remix, Next.js, Fastify, Hono, Prisma, Drizzle, Zod, Apollo GraphQL, Meilisearch, NATS, Ory, Stripe, Nx, Bun
- Strict lint setups: typescript-eslint strictTypeChecked, custom lint rules, architecture boundaries
- Docker, Kubernetes, GitOps (ArgoCD), GitHub Actions, External Secrets
- Payments and subscriptions (Stripe checkout, webhooks, promotion codes)
- Writing agent instructions, skills or custom tooling for AI coding agents
- Experience building a game tool, such as a database, interactive map, calculator or planner
What we offer
- Stable, long-term work on a product used by millions of people.
- Direct communication.
- A highly technical environment with a small team that values each individual's work and contributions.