Inspiration

As a USC student and huge football fan, I wanted an easier way to learn more about the team I was watching every week. At games, I would often want to look up a player, an old season, or something about USC football history, but the internet at the Coliseum can be extremely spotty.

At the same time, I had been working through 100 Days of SwiftUI and wanted to challenge myself to turn what I learned into my first published iOS app. I decided to combine that with my interest in sports analytics and build USC Football Tracker.

What it does

USC Football Tracker puts more than 130 years of USC football information in one place. Users can explore historical seasons, game results, rosters, coaches, national championships, Heisman winners, and other program accolades.

The app also includes the current 2026 roster and schedule, with current-season game results automatically updating through an API. Much of the app's historical data is stored locally, so users can still explore USC football information when they have poor or no internet connection.

I also built a season predictor that gives win probabilities for USC's schedule and simulates the season using a machine learning model.

How we built it

I built the iOS app using Swift and SwiftUI.

For the data pipeline, I used Python to collect and process USC football data from CollegeFootballData.com. I transformed the historical information into JSON files, then used Swift's Codable and JSONDecoder to convert that data into models that could be displayed throughout the app.

For the season predictor, I used Python to create a CSV training dataset from historical USC games. The dataset included features such as home/away status, conference-game status, USC's AP ranking, and the opponent's AP ranking. I trained and evaluated the model using Create ML, then integrated the trained model into the app using Core ML.

For the current season, I also built a small backend using Vercel that communicates with the CollegeFootballData API. The Swift app uses URLSession to retrieve the latest 2026 game data while falling back to locally bundled data if the request fails.

Challenges we ran into

One of my biggest challenges was figuring out how to turn a large amount of football data into something that was actually useful inside an iOS app. I had to learn how to clean and restructure API data with Python, decode JSON in Swift, and design reusable SwiftUI components to display it.

I also ran into issues I didn't initially see while developing in Xcode. For example, some text became difficult to read when I tested the app on iPhones using Dark Mode. Testing on actual devices helped me identify and fix those problems by using preferred color scheme on light mode.

My other challenges were not regarding code but through the process of getting the app released to the app store. I kept getting errors within my reviews in the privacy policies or other small things. Eventually, my app was released and it was amazing!

Accomplishments that we're proud of

My biggest accomplishment that I'm proud of was being able to ship a real app onto the app store and have others view and use my app. From the early stages of my developer career, not once did I think about how apps were made, until I really got into SwiftUI. Learning the language and framework itself was fun for me as it is very different from other coding languages. Being able to take what I learned into a real product and showcase my skills to others felt super rewarding.

What we learned

The main lesson I learned was the timeline of how a real app is made. Before this project, I had mostly worked on smaller projects where the goal was to learn one aspect of SwiftUI. USC Football Tracker showed me how to combine everything I was taught. I learned how an idea is able to shape into a real application. I also learned that an app is never really "finished." After using it myself and hearing from other USC students, I found new problems to solve and features to add, such as current 2026 team data. This project taught me how important iteration and user feedback are to the development process..

What's next for USC Football Tracker

I want USC Football Tracker to continue improving throughout the 2026 season. My next goal is to make the current-season experience even more useful on game day and continue improving how live information is presented. Whether this means better UI or more information, I want to continue working on this app.

Longer term, I'd like to improve the season predictor with a larger training dataset and better metrics, leading to overall better predictions. My ultimate goal is for this app to be the best app for Trojans to learn more about the team and USC football history before, during, and after games.

Built With

  • coreml
  • createml
  • ml
  • python
  • swiftui
  • vercel
Share this project:

Updates

Submission history