Inspiration
Every gamer knows the feeling: a friend recommends a title, a YouTube video surfaces a hidden gem, a Reddit thread surfaces a must-play classic, and within days you've forgotten all of it. Your wishlist is a graveyard. Your notes app is a mess of disconnected game names. Your backlog is a source of guilt, not excitement.
I built Game Roster because I've lived that problem. I wanted something that felt like a personal gaming identity that travels with you across every platform and every phase of your life as a gamer. A place where you can capture every game you intend to play, celebrate every completion, share your taste with the world, and discover what to play next through the people you actually trust.
What it does
Game Roster is a cross-platform mobile app (iOS & Android) that gives gamers a structured, beautiful way to manage their backlog and share their gaming life.
Core Features
- Game Discovery - Search a catalog of ~350,000 games (sourced from IGDB) with fast full-text and trigram search. Filter by platform, genre, and release period.
- Personal Library - Organize every game across six statuses: Wishlist, Backlog, Playing, Paused, Completed, and Dropped. Track progress, hours played, start & completion dates, and private notes.
- Custom Lists - Create ranked or unranked lists (e.g. "Top 10 JRPGs of All Time", "Games to play this Winter"), drag-and-drop to reorder, and publish them to your public profile.
- Ratings & Reviews - Rate games from 1–5 stars in half-star increments. Write full reviews with spoiler-toggle support. Like and comment on reviews from others.
- Social & Discovery - Follow other players, browse an activity feed of what people are playing and reviewing, and discover games through trusted social connections rather than store algorithms.
- Sharing - Share your profile, custom lists, reviews, and completion milestones via native share sheet. Every shareable entity has a canonical URL, deep-link support, and social preview metadata.
- Notifications - In-app notification inbox for new followers, review likes/comments, and list likes.
- Premium (Game Roster Pro) - Unlockable via a subscription (powered by RevenueCat), granting unlimited custom lists, advanced statistics, and more.
How we built it
Mobile (React Native / Expo)
- Framework: Expo SDK 57 with React Native 0.86 and TypeScript.
- Navigation: React Navigation (native stack + bottom tabs).
- State Management: Zustand for global client state; TanStack Query v5 for server state with optimistic updates.
- Authentication: Clerk, supporting email/password, Google Sign-In, and Apple Sign-In.
- Payments: RevenueCat (
react-native-purchases) for cross-platform subscription management. - Forms: React Hook Form + Zod for type-safe form validation.
- Gestures & Animation: React Native Reanimated 4 + Gesture Handler +
react-native-draggable-flatlistfor smooth drag-and-drop list reordering. - Images:
expo-imagefor high-performance, cached image rendering. - Sharing:
expo-sharing+ native share sheet integration with deep-link support via Universal Links (iOS) and App Links (Android). - Design System: Custom "Cyber Stack" design system - dark-mode-first with neon purple (
#ecb2ff) and cyber green (#00fe66) accents, glassmorphism, tonal layering, and three curated typefaces: Sora (headlines), Hanken Grotesk (body), and JetBrains Mono (labels/metadata).
Backend
- Laravel REST API with an OpenAPI-documented surface.
- PostgreSQL with full-text search and trigram indexing for fast game search across a 350K+ catalog.
- Redis for caching and queue management.
- IGDB Integration for game metadata (names, covers, descriptions, platforms, genres, screenshots, related games).
- Clerk Webhook verification for user lifecycle events.
- S3-backed image delivery.
Tooling & Infrastructure
- EAS Build & Submit for CI/CD - production IPA and AAB artifacts built and submitted from the same CLI.
- Argent for automated UI testing on iOS Simulator and Android Emulator.
- Feature-branch development workflow with 10 distinct phases from foundation to production.
Challenges we ran into
- Optimistic UI with complex state - Implementing TanStack Query optimistic updates for library status changes that reflect instantly while gracefully rolling back on error was deceptively tricky, especially when the same game can appear across multiple tabs simultaneously.
- Drag-and-drop list reordering - Getting
react-native-draggable-flatlistto work smoothly within a bottom sheet alongsideexpo-imageon both platforms required careful gesture priority tuning with Reanimated 4's new architecture. - Cross-platform subscriptions - Coordinating RevenueCat entitlements, StoreKit sandbox testing, and Google Play Billing across two platforms (with different review timelines and compliance requirements) was one of the most operationally complex parts of the build. App Store rejection and Play Store policy compliance reviews each required multiple iteration cycles.
- Universal Links & App Links - Setting up the associated domains, AASA file, and Android intent filters so that shared URLs open the app seamlessly (and fall back to a web view when the app isn't installed) required tight coordination between mobile and backend config.
- Cold-start social experience - An empty activity feed feels broken. We had to think carefully about the onboarding journey to seed a user's library quickly and surface trending games / suggested users (WIP) before their social graph exists.
- Android scroll performance - Getting smooth, jank-free scrolling in library grids on mid-range Android devices required systematic profiling with Argent and targeted memoization.
Accomplishments that we're proud of
- Shipped on both stores - Game Roster is live on the Google Play Store and is pending Review on Apple App Store.
- The Cyber Stack design system - A bespoke, cohesive dark-mode design system built from scratch that gives the app a genuinely premium gaming aesthetic, not just another generic light-card UI.
- Fast search over 350,000 games - Sub-500ms search responses across a large game catalog using PostgreSQL full-text + trigram indexing, with no external search infrastructure required at launch.
- Drag-and-drop ranked lists - A feature that feels deceptively simple but required deep gesture and animation work to feel natural and snappy.
- Full deep-link ecosystem - Every profile, game, list, and review has a canonical URL that works as a Universal/App Link, a social share preview, and a web fallback - all coordinated from a single share action in the app.
- Automated UI testing - Robust end-to-end UI coverage via Argent across the full auth, library, lists, reviews, and social flows on both iOS simulator and Android emulator.
- End-to-end subscription flow - A complete freemium model with RevenueCat, from paywall presentation through purchase, restoration, and entitlement gating - compliant with both App Store and Play Store policies.
What we learned
- Design systems pay dividends - Investing early in a custom design token system made every subsequent screen dramatically faster to build and visually consistent without extra effort.
- Optimistic updates require a contract - TanStack Query's
onMutate/onError/onSettledlifecycle is powerful, but it demands a very clear mental model of what the cache looks like at every moment. Getting this right once made every subsequent mutation trivial. - Store review processes are a product constraint - App Store and Play Store review timelines, compliance guidelines, and rejection reasons are real engineering constraints, not just legal formalities. Building compliance in from the start (encryption declarations, data safety forms, subscription terms) saves enormous rework.
- RevenueCat dramatically simplifies IAP - Cross-platform subscription state, receipt validation, entitlement management would have taken months to build natively. RevenueCat reduced that to days.
- Social cold-start is a product problem, not a bug - An empty feed isn't a bug to fix after launch; it's a UX design problem to solve in onboarding. Getting users to their first "followed person's activity" is the real activation metric.
- Argent-powered testing on real device targets catches real bugs - Running automated UI flows against an actual iOS Simulator or Android Emulator (vs. a mocked environment) caught scroll bugs, gesture conflicts, and layout breakages that unit tests would never find.
What's next for Game Roster
- Integrations - Adding Steam, PlayStation Network, XBOX Network library imports - the biggest planned premium feature.
- Advanced Statistics & Yearly Recap - A shareable "Gaming Year in Review" card showing completions, hours played, top genres, and rating distributions.
- AI-Assisted Recommendations - Once we have sufficient user data, surfacing personalized "what to play next" suggestions based on completed games, ratings, and social graph.
- Affiliate Store Links - Surfacing price comparisons and buy links on game pages through partner programs, disclosed transparently.
- Comments on Reviews & Lists - Full threaded discussion on public content.
- Data Export - Let users own their data: export their full library, ratings, and reviews as JSON/CSV.
- Custom Profile Themes - Premium profile customization with accent color choices and background styles.
- Multi-language Support - Localization for key markets.
- Push Notifications - Graduating from in-app to push for new followers, release alerts, and milestone celebrations.
- Performance Optimizations - Improve loading/searching functionality for the large game database.
Log in or sign up for Devpost to join the conversation.