Subscription SaaS that syncs your Valorant, Fortnite & League of Legends cosmetics into a public shareable profile, with no screenshots and no manual updates.
Loadouts is a subscription SaaS (Stripe-billed) that lets players link Valorant, Fortnite, and League of Legends accounts and generates a clean, public profile page showing off every skin, agent, champion, and cosmetic they own. Valorant and Fortnite link through a companion Chrome extension that auto-captures the Riot/Epic OAuth redirect; League links through a native Windows helper that reads the local League Client (LCU) API directly, since Riot exposes no public API for owned League cosmetics. Inventories stay in sync automatically, and billing runs entirely on Stripe Checkout and the Billing Portal.
3 Titles
Games Supported
Stripe Subscriptions
Billing
Extension + Native Helper
Account Linking
Each game authenticates differently and none of it is a normal public API: Valorant and Fortnite go through Riot/Epic OAuth redirects that return tokens in incompatible shapes, while League has no public cosmetics API at all and only exposes data through its local client. On top of that, the original manual/bank-transfer payment flow had no reliable way to react to plan changes, failed payments, or cancellations in real time, and any subscription system replacing it had to survive duplicate or out-of-order webhook delivery without double-processing an event.
I structured the NestJS backend around a per-game fetcher/parser module (Valorant, Fortnite, League of Legends), so each game's auth and inventory quirks are isolated behind a common contract. For Valorant/Fortnite, a Chrome extension watches for each provider's OAuth callback and hands the result to the app via a scoped event, so no token is ever copied by hand. For League, a native Windows helper waits for the LCU lockfile, authenticates against the local client, and exports a normalized inventory file the user drops into the app. Billing runs on Stripe Checkout Sessions and the Billing Portal, with a separate signature-verified webhook endpoint handling subscription and payment-failure events; each webhook is recorded by its Stripe event id before being applied, so retried or out-of-order deliveries are no-ops instead of double-applying a state change. I also replaced the old manual payment-request flow entirely and built an internal admin panel (separate auth, analytics, per-plan feature flags, support tickets) to manage it.
Loadouts is live at loadouts.space with three fully synced games, Stripe-based subscription billing (Checkout, Billing Portal, and idempotent webhook handling) in place of the original manual payment flow, and a public profile page for every linked account that updates automatically as a player's inventory changes.
Tags
Marketing homepage explaining the linking flow and supported games.




A Riot/Epic OAuth token flow pulls inventory once and discards it; account passwords never touch the server.
Weapon skins, agents, and sprays from Valorant; outfits and emotes from Fortnite; champions, skins, and ranked stats from League of Legends, all normalized into one profile.
A companion Chrome extension auto-captures the Riot/Epic OAuth redirect, so linking a Valorant or Fortnite account never means copying a token by hand.
Riot exposes no public API for owned League cosmetics, so a native Windows tool reads the local League Client API directly and exports a ready-to-link inventory file.
Checkout Sessions, the Billing Portal, and idempotent webhook handling drive plan upgrades, downgrades, and failed-payment recovery, replacing the original manual payment flow.
Every linked account gets its own public URL that can be toggled public or private at any time.