Inspiration
Predict The Score started as a small game between colleagues during the FIFA World Cup. Everyone predicted match scores, but the process quickly became difficult to manage. Predictions were spread across spreadsheets and chat messages. Fixture ordering became confusing, scores were calculated manually, and there was no reliable way to prevent someone from changing a prediction after kickoff. What began as a simple leaderboard for 14 friends revealed a broader idea: football fans everywhere enjoy friendly prediction competitions, but organising them should not require spreadsheets or manual calculations. That inspired us to turn the original internal tool into a reusable football prediction platform for any league or tournament.
What it does
Predict The Score lets football fans: Predict upcoming match scores before kickoff Compete on a global competition leaderboard Create private groups for friends, family or colleagues Join groups using a shareable invitation link or code Use one prediction across every group they join Switch between multiple football competitions Follow countdowns, fixtures, scoring rules and rankings Access the same account and predictions across devices Predictions lock automatically when a match begins. Once the final result is recorded, points and leaderboard positions are recalculated. The app is designed purely for entertainment and friendly competition. It does not involve betting, entry fees, cash prizes or wagering.
Only the highest applicable rule is awarded: 10 points: Exact score 6 points: Correct result and winning margin 4 points: Correct result 1 point: One team’s score matched exactly
How we built it
The frontend is a responsive web application built with Vite and JavaScript. The interface was designed to work across desktop, mobile browsers and an embedded mobile app experience. The backend uses Supabase for: Passwordless email authentication PostgreSQL data storage User profiles Competitions and fixtures Predictions and results Private groups and memberships Administrator permissions Row Level Security policies Secure database functions The application is hosted on Vercel, with Vercel Analytics providing lightweight usage insights. Fixtures are organised by competition, season and matchday. Predictions belong to authenticated user IDs rather than display names, allowing a user to change their name without losing their history. Private groups do not duplicate predictions. A single prediction can contribute to the global leaderboard and every private group leaderboard in which the player participates. We also created reusable SQL import scripts for onboarding competitions and fixture schedules, plus a club-crest importer with aliases for handling inconsistent team names from external data sources.
Challenges we ran into
Evolving from one group to a global platform The first version assumed a fixed list of players in one trusted group. Productionising it required redesigning the database around authenticated users, competitions, memberships and private groups without carrying over those original assumptions. Protecting predictions Disabling an input in the interface is not enough. A user could still call the backend API directly. We moved critical rules into the database using Row Level Security and server-side checks. Predictions can only be inserted or updated before kickoff, regardless of whether the request comes from the website, mobile app or a manually constructed API call. Fixture identity and data integrity Early versions relied too heavily on match numbers and spreadsheet ordering. When schedules changed, it became possible to associate predictions with the wrong fixture. We learned to use stable fixture IDs, validation queries, repeatable migration scripts and audit timestamps. This was one of the most important lessons from the project: live sports data must be treated as structured production data, not as a list that happens to be in the correct order. Time zones and automatic locking Kickoff times must work for users in different countries while still enforcing one authoritative lock time. Fixtures are stored using consistent timestamps, displayed in the user’s local time, and checked by backend policies at prediction time. Authentication across web and mobile Passwordless authentication is simple for users but more complicated across browsers and embedded apps. We implemented secure callback handling, universal-link support and invitation preservation so a user can follow a group invitation, authenticate and continue joining the group. Database security Some early group policies caused recursive Row Level Security errors. We replaced recursive policy logic with carefully scoped security functions and created a dedicated security-verification script covering permissions, prediction locking, group privacy and administrator access.
Accomplishments that we're proud of
What we learned
The biggest lesson was that production quality is not one feature. It is the combination of identity, permissions, data integrity, error handling, mobile usability and clear user feedback. We also learned that real users reveal requirements faster than brainstorming. Features such as prediction timestamps, automatic locking, private invitation links, group-specific leaderboards and fixture filters came directly from people using the original version. Most importantly, we learned to move important business rules out of the interface and into the backend. A polished button can guide a user, but only a secure database rule can protect the competition.
What's next for Predict The Score
The next stage is focused on reliability and scale: Automated fixture and result ingestion More unit, integration and end-to-end tests In-app account deletion and privacy controls Improved monitoring and recovery procedures Licensed and consistently sourced club imagery Push notifications before prediction deadlines Additional competitions and tournament formats Native mobile distribution with secure deep links Predict The Score began as a spreadsheet replacement for a few friends. It is now becoming a platform where football fans can create their own communities, make one prediction and enjoy every leaderboard together.
Built With
- analytics
- api
- api-football
- app
- authentication
- css3
- github
- html5
- ios
- javascript
- level
- node.js
- passwordless
- postgresql
- responsive
- rest
- row
- security
- sql
- supabase
- vercel
- vite
- web
Log in or sign up for Devpost to join the conversation.