VacantCourt 🎾

Due to my high interest in tennis, I came across a problem that hindered my ability to enjoy the sport: the lack of available tennis courts in my region. Now while this may sound like a physical issue, I figured "what if there was a way to know whether or not a court is available?" and this little idea became a reality when I made a fully fleshed out hardware system and website to manage all these endpoints.

How I built it:

Before I built anything, I started with the good-ol' whiteboard for planning out the foundation of my project. Using Lucidchart, I created a "Planning Process"{:target="_blank"} whiteboard that set the foundation for what I was going to build.

I knew that I was going to use Firebase as my data storage software, storing information like user_id, court_name, availability, which allowed me to handle information the way I was most comfortable with, compared to an SQL-style database like PostgreSQL.

But how was I going to detect whether or not a court is available or not? Simple: I use an ai detection model, like tensorflow_lite, which is connected to a camera and detects people on the court. Whenever a person was detected, it updates my Firebase Database to in-use.

With this plan, I bought an Arduino and a camera module to start my testing....until it just didn't work. You see, ai models take up a ton of resources. I'm primarily talking RAM and cpu power, both of which my homemade device didn't have. I then came across a realization, I was just building a phone with extra steps. It had all the necessary parts: a camera, a powerful cpu, and good thermal conditioning.

From this, I started out by using React and creating a very simple rectangle with small bits of data like the court name, availability, and how many courts were available. The simplicity of the ui allowed me to focus my time into building the hardware system. On my Google Pixel 6, I built a custom app using Kotlin that allowed the user to setup "bounding boxes" to detect if someone is playing on the court. After connecting everything up, I had successfully made my proof of concept, albeit it was unreliable, it was definitely a starting point.

Continuing down the road, I developed many advanced features on my website like the ability to add a court, location, and an authentication system. After adding some finishing and a splash page, my app was ready to go!!!!

Challenges I Faced:

Alright alright, maybe it wasn't ready to hit the consumer market, but it atleast worked in my community.....right? This statement couldn't be further from the truth. After getting some testers to use my product, I realized that my app had too many bugs. Moreover, it just didn't fit the theme of the hackathon. At this point, I felt as if I was in a gray zone where no progress was being made, until I realized that I was aiming for the wrong target entirely. Initially, I was simply informing others if a court is available or not, but after some discussions with my peers, I came to the conclusion that I needed to do more, something that would actually help a fellow tennis player. After some more review, I added a feature when users could add their own tennis courts to the system, instead of relying on the preexisting ones. I envisioned that players could create their own "mini network" of tennis courts that others could piggy back on. With this simple change, I saw a lot more positive feedback.

What I learned:

Look, from the beginning this was a very ambitious idea that could have completely flipped on its head at any point. But what I took away from this is that whenever I build anything, I should always look at it from the consumer's perspective, basing it off of a entrepreneur mindset. Initially, I was thinking about what I wanted instead of what my community needs. This shift in mindset boosted my confidence to continue to build out this idea instead of scrapping it and building something else.

How this fits the theme of "Social Good":

Vacant Court is actually used by a few of my close friends that were interested in my idea. Even though I had to take my device down temporarily, word spread about this project and people seem to enjoy it. I took an annoyance in someone's life and removed it, saving them time and energy searching for available tennis courts. In my eyes, that seems like a win!

Share this project:

Updates

Submission history