How can fantasy football feel less predictable and reward better strategy each week?

Wildcat Fantasy Football

Sports & Entertainment

A fantasy football mobile app for players who want a less predictable experience, with a bet-based multiplier system that brings real risk and reward to weekly matchups. I built Wildcat on my own for players who think standard fantasy is predictable, from a React Native frontend to secure auth and MongoDB backed APIs.

Wildcat Fantasy Football Home Screen
Wildcat Fantasy Football Leaderboard
Wildcat Fantasy Football Matchup Screen

Role

Full-Stack Mobile Developer

Timeline

October - December 2025 (SI679/SI669 Course Project)

Stack & Methods

Development

React NativeJavaScriptExpressExpoMongoDBNodeREST APIsFrontend DevelopmentFull-Stack Development

Design & Research

Mobile-first UX (weekly matchup flows)Demo mode and test data for gradingRisk and reward gameplay design

Demo

My Work

Fantasy football players on apps like ESPN and Sleeper love the competition, but many find the game becomes repetitive over time. I asked how fantasy football could feel less predictable and reward better strategy each week, and designed Wildcat for players who want to add creativity, strategy, and risk-taking to their weekly matchups while keeping the core structure of fantasy football. Every user drafts a six-player roster, starts three players each week, and before each matchup places "More," "Less," or "None" bets on their players' performances. Each bet attaches a multiplier to that player's fantasy points, boosting the score if the prediction is right and penalizing it if it is wrong, which makes fantasy decisions meaningfully higher stakes.

I started by studying two existing apps. Sleeper gave me a model for clean navigation between Team, Matchup, and League tabs, and its "Picks" feature directly inspired the multiplier system, including how successful and unsuccessful bets are shown. SquadBlitz gave me a leaderboard structure for standings and an easy way to rearrange a lineup, which I extended with a visible bench section so users can clearly tell starters from benched players. From there, I sketched the three core screens: a Matchup screen comparing both teams' lineups, scores, and active multipliers side by side, a Team screen for choosing starters and placing bets, and a Standings screen that ranks teams by win-loss record, with total points as the tiebreaker. I then took those sketches into Figma mockups with a consistent bottom navigation bar for Matchup, Team, Standings, and Settings. On the Matchup mockup, each player row shows the math behind the score, such as 15.50 points times a 4.00 multiplier for 62 points, so users can see exactly how their bets paid off or backfired, with starters on top and the bench listed below. The Standings mockup ranks each team with its total points and win-loss record, and simple Login and Sign Up screens set up the authentication flow.

The design changed as I scoped it. My original proposal included league variants like all-quarterback and all-tight-end leagues, with rosters of three to five players. In my project plan, I narrowed the focus to a six-player roster and turned league variants, live score updates, bet history, and other extras into nice-to-have features, so I could deliver the core betting experience first. Because the project combined two courses, I built both halves: the React Native and Expo mobile app for SI 669, and a MongoDB backend with authentication for SI 679.

On the mobile side, I built fast matchup flows in React Native Expo and added lineup control, standings, and multiplier based scoring visibility, folding team management directly into the Matchup screen. On the backend, I modeled leagues, users, and players, implemented authentication with bcrypt and JWT, and built multiplier logic and weekly result computation. I pulled live NFL data via the Sleeper API and exposed team and matchup endpoints, and wrote tests with Jest. Because the app depends on live weekly data, I also created demo mode with seeded accounts and stable weekly test data, so it could be reviewed and graded consistently.

The hardest part to build was league creation and management. Looking back, I wish I could have supported more teams and more selected players, which would have made the app more dynamic and exciting. If I did it again, I would design my own system for calculating odds to set the bet multipliers instead of using random numbers, and I would make the UI more compact and organized.

Outcome

By the end of the semester, I shipped a playable fantasy experience with differentiated multiplier mechanics. I completed auth, matchup flow, standings, scoring, and backend setup, which covered nine of the ten core features in my plan, and league creation was partially completed, which established a base for multi team league expansion. I presented the project in both courses, including a knowledge-sharing segment on how Socket.io could power real-time matchup updates. Building Wildcat on my own strengthened my full stack integration across mobile client and API.

To take Wildcat toward a real release, my top priorities are to expand player and weekly coverage beyond the current API source and support more teams per league. After that, I want to integrate betting odds data for richer multiplier logic and improve league creation and invite reliability.