Inspiration
My 5 year old son gave me the idea and inspiration. I was looking at a picture on my phone to build a 5-man NBA team with a 15 dollar budget and he asked me whether I can click on the players to choose them. I said: "No, unfortunately, it's just a picture." But then I thought, wouldn't it be cool to have a game like this? I'd like this as an NBA fan. My son also said it'd be nice, so that was my inspiration for the project and I thought this Hackathon is a great opportunity to build this app for.
What it does
BuildFifteen (is how I called it) does what you'd expect from an interactive 15$ NBA team builder game and maybe a little more. There are some "challenges", each have 25 players in 1, 2, 3, 4, 5$ tiers and you can build interactively a 5-man team. But it doesn't stop here, because the system calculates a predicted win number for that 5-man team for an 82 game season based on purely statistical data of those players. Of course, this is a gamified calculation and won't/cannot be perfect, but aims to be realistic enough to have a fun game with this. Challenges have target wins and the users need to pass those targets to unlock next official challenges.
Besides the built-in/official challenges, the fun part is the community challenges. Users can create their own challenges for themselves first and if they wish they can share publicly with the community (after logging in, but for free). This way, anyone can create any challenges from any not just active but even retired NBA players. There are two types of challenges, one is calculating with current 2024-25 season statistics and the other one is calculating with the peak year statistic for each player.
Overall, this is the old 15$ build a 5-player team pictures coming to life in an app.
How we built it
I started from zero with Bolt and could get very far away with the UI. It was my first time using Bolt and I was quite impressed by the quality of the UI screens it generated for me. Even at the end of the project, the majority of the UI was built by Bolt. It even generated some backend logic (Supabase edge functions) to start with to be able to test properly some functionalities. For some features and to use some libraries I decided to build the backend in Python and turned to Cursor for that. For the DB layer I stayed with Supabase after I started using that from Bolt. Also, I used some AI tools especially when researching/planning the win prediction algorithm like ChatGPT, Manus and ChatPRD before implementing more complex features.
Lastly, I needed to deploy the stack. DB in Supabase, backend running in Render, UI on Vercel, authentication with Clerk, purchased a domain even and set everything up end to end for BuildFifteen.
Challenges we ran into
The biggest challenge was to create an algorithm that provides consistent (always the same for the same 5 players), realistic (NBA fans could agree with the given results), reliable (gives back the results quickly most of the time), but on the other hand challenging and engaging win prediction calculations. By no means, I'd say I solved that perfectly, but it's a good starting point to start playing with and iterate on the future.
The solution at a high level is fetching the official NBA statistics for the given players. There are two modes, for the current mode it fetches the 2024-25 season statistics for the peak mode it fetches actually all seasons, calculates which is the best statistical season for the given player and store the statistics for that season (I tested this and the algorithm did a quite good job finding peak statistical seasons for all time greats). Based on these statistics, the algorithm checks added wins individually for each player but also check how they'll fit together. Like how good the defense will be, how good shooters they are, how will the spacing be, how well they fit together positionally (like do we have 3 centers in the same team, etc.). Based on all these the algorithm gives a number maximum 82 for any 5 player teams. There is also a 3-tier cache system implemented for reliability and speed, there is an in-memory cache with the statistics for instant predictions, a db storage for long term storage and we only need to nba statistics from the external api when the data is not even in the db so the given player has not been asked for ever in the system.
This is the solution so far, but it was a challenge to build this with the criterias above, I worked on this a lot and it'll need a lot more polishing still to make this a great game.
Accomplishments that we're proud of
Mostly that I'm concluding this one month run now with a fairly well finished project. Getting started was the hardest, but I'm glad I did, doing the project was fun, but time consuming, I'm happy I didn't quit, finished with a full deployment of the app, which is the first I ever did.
What we learned
The most important thing I learned is to get started now. If you are interested in something and you'd like to do it, don't postpone it, just start doing it.
Besides that, this is my first full stack app I built, with a full MVP featureset and a full deployment. Because of this, there are a bunch of tools I used for the first time (including Bolt), so I learned a lot about them.
What's next for BuildFifteen
First of all, I'll be curious about the Hackathon results :) Second of all, I deliberately put the effort in to properly deploy this app, I'd like to start testing it with friends & family type of users, get feedback early, gather my thoughts based on their feedback, implement and deploy a version that went though some feedback loop and see if BuildFifteen gets any traction after some promoting. Based on the users and feedback, I'll decide what to do with this.
Built With
- bolt
- chatgpt
- chatprd
- clerk
- css
- cursor
- docker
- fastapi
- manus
- postgresql
- python
- react
- render
- sqlalchemy
- supabase
- typescript
- vercel
- vite

Log in or sign up for Devpost to join the conversation.