Ticket 05 — Case Study Still shipping

PoE Source

Every leveling guide online is a wall of text you lose your place in the second you tab out — so I built one you can check off.

A free, unofficial companion hub for Path of Exile 1 and 2 — campaign leveling you check off step by step, plus build import/analysis, Atlas planning, live economy pricing, and a farming-strategy platform other players can publish to and browse. Not affiliated with the game's publisher. Built independently, free to use, still shipping daily.

The problem

Path of Exile's own documentation is famously not the game's strong suit — the community fills the gap with wikis, YouTube guides, and static text walls that don't track what you've actually done. PoE Source's pitch, from its own public roadmap: interactive guides you can check off step by step, so you never lose your place in the campaign the way you do with a static wiki page.

I was that player. This started as scratching my own itch — keep my place, keep moving — and grew into a hub other players could actually use.

poe2source.com — campaign guide
PoE Source campaign leveling guide with checkable steps mid-run
Campaign guide — checkable steps, not a wall of text

The approach

This isn't one feature — it's a hub. Several different systems had to agree on the same data model (a “step,” a “character,” a “build”) so progress and content stay consistent everywhere a player touches the site.

  • Dual-game from day one. Path of Exile 1 (Acts 1–10, ~467 checkable steps) shipped first as the MVP; Path of Exile 2 (~305 steps across Acts 1–4 + Interludes) is built in parallel and marked Early Access while the game is still in beta. The schema was built to hold both games from the start.
  • Progress without an account — better with one. No login required for v1 — everything lives in browser localStorage. Signing in (Google or Discord) adds cloud sync, with a one-time merge on first sign-in so existing local progress isn't lost. Multiple characters per player, tracked separately.
  • Sourcing discipline over speed. Campaign data starts from an open-source dataset (MIT-licensed), then gets hand-corrected and cross-checked against a separate community data project — with an explicit rule not to copy text from the wiki or other guide sites. Fan communities are skeptical for good reason; wrong callouts cost players real time.
  • Automated pipelines instead of hand-maintained JSON. Farming catalogs, item data, atlas trees, and a patch-news drafting pipeline refresh from external sources (RePoE, poe.ninja, GGG exports) via scripts rather than being retyped every patch.

What's actually running

  • Two full campaign leveling guides — PoE 1 Acts 1–10 complete; PoE 2 Acts 1–4 + Interludes (Early Access). Checkable steps, zone grouping, class-relevant reward filtering, boss-fight callouts, and endgame-onboarding chapters.
  • PoE 2 endgame companion (public early beta) — a “Tonight” run-loop recommender, Tracks, and Goals, gated by a milestone graph rather than hard blocks.
  • Live economy pricing for both games via poe.ninja — currency, fragments, PoE 1 uniques, with unit toggling, sorting, filtering, and pinned favorites.
  • Farming-strategy platform — author Atlas paths, map selection, mods, scarab/tablet loadouts, and a Prep→Map→Extract→Upgrade loop. Shareable public pages and an Explore discovery feed.
  • Path of Building import and analysis — paste a pobb.in link or planner export; get parsed gems, gear, and a first-party canvas passive-tree viewer (not a wrapped third-party widget).
  • Atlas tree viewer/allocator for both games — standalone and embedded inside farming strategies.
  • Accounts and cloud sync — optional Google/Discord sign-in on top of a product that works without ever creating an account.
  • Semi-automated news pipeline — patch notes and league news fetched, drafted, and published through a dedicated script chain.
poe2source.com — build import
PoE Source Path of Building import with interactive passive tree
Build import — parsed planner data plus a first-party passive tree

The numbers

Pulled from the repo, not rounded up for effect. Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, Supabase, Vitest, deployed on Vercel.

141
React components
173
Library modules
45
Page routes
36
Data scripts
51
Test files
~62k
Lines of TS
Next.jsReact 19TypeScript SupabaseTailwind 4VitestVercel

Actively developed and still shipping — not a frozen demo.

poe2source.com — farming strategy
PoE Source farming strategy authoring with Atlas path
Farming strategies — publishable recipes with Atlas path in context

The hardest part

Building a from-scratch passive-tree renderer instead of embedding someone else's widget. The tree has to show the exact path a build guide expects — pan, zoom, allocated nodes, jewels — and stay accurate across two games with different trees. Wrapping a third-party viewer would've been faster; owning the canvas meant the tree could live inside build import and farming strategies without fighting someone else's API or licensing.

Second place: reconciling localStorage progress with a new account on first sign-in without silently wiping a league character. The merge is one-time and explicit — cloud wins on conflict only after local data is accounted for — because losing progress is the fastest way to lose a player's trust.

Where it stands

Live and free at poe2source.com. PoE 1's campaign guide is the shipped MVP (confirmed by three full personal playtests of the entire campaign). PoE 2's guide and endgame companion are public but marked Early Access/beta while the game itself is still in beta. Still shipping daily.

If you're evaluating this for your own project

This is what one person, several real systems, and one coherent data model looks like — a leveling guide, recommendation surfaces, a live pricing feed, a content-authoring platform, and account sync, built to agree with each other instead of bolted together. Different proof than a billed SaaS: rapid solo execution across a large multi-system product. If your project needs that kind of range — a multi-part web app, a system that has to stay consistent as it grows, or a real data pipeline behind the UI — let's talk.