← Back to Projects
Project Completed May 2026

Video Game Backlog Bunker

A backlog management app to track, organize, and conquer your game library — because the pile never shrinks on its own.

Next.js TypeScript Tailwind CSS Vite Zustand Framer Supabase PostgreSQL Vercel Domain Driven Design Feature-Sliced Design

Summary

Video Game Backlog Bunker is a personal project born out of a real problem: too many games and being indecisive about which game I should play. On top of keeping track of current games, it also keeps track of games I am interested in or looking forward to. To combat the indecision, I made a randomizer that would just pick a game for me.

Introduction

My Xbox, Playstation, Steam and Switch libraries have hundreds of games. My backlog was just a notes app list that I never looked at and was hard to keep track of. I wanted something purpose-built: a tracker that knew what my games actually were, could surface the right one when I needed it, and kept a proper history of what I’d played, what I’d abandoned, and what I’d 100%ed.

Architecture

The app is built on Next.js with the App Router, using Supabase for auth and PostgreSQL. Client state is managed with Zustand, keeping server data and UI state cleanly separated.

The most interesting technical piece is the game enrichment pipeline. When a game is added, it cross-references an external APIs: IGDB for all of the game meta. I can also run a script to fetch data from RAWG as well. Both external IDs can be stored per game so future syncs can stay in lock-step without re-querying.

Auth uses Supabase Row Level Security with two patterns throughout the codebase — requireAuth() for protected routes and optionalAuth() for public anonymous browsing. The status model goes beyond a simple “played/unplayed” flag: games can sit in wishlist, actively playing, completed, abandoned, replay, or backlog states.

Framer Motion handles the carousel animation on the random game picker, which filters by status and mood tags before spinning.

ADD 7/13/26 - Added a new feature for my recently played games. It goes through my Discord status or Steam API for games being played. I set up a CRON job in Supabase to fetch a status and update a new table with sessions.

Infrastructure

Deployed to Vercel on the hobby tier — zero config, automatic preview deployments on every push. Supabase handles both authentication and the PostgreSQL database, with RLS policies enforcing per-user data isolation at the database level.

Screenshots

Desktop

Mobile