Inspiration

As someone who has lived in New York City and frequents Flushing, I have had to deal with lack of parking for much of my life. Convenient or cheap parking is almost impossible to find, especially on weekends and holidays. This is a problem felt by millions living in large cities, who often have to wait very long before a parked car leaves. This phenomenon can explain the expensiveness of private parking lot spaces. For instance, in Manhattan, garage spots usually cost around $30 per hour, much higher than the $1.50-$5.50 rates for streetside parking.

What it does

My app connects people looking for spots with people who will be leaving soon. Take one user with a parked car, who is finishing up whatever they are doing. When they are a few minutes away from their car, they can make a post to the app that lets nearby users know that a spot there will open soon. Another user can reserve the spot for a few credits and start making their way there. After the swap occurs, the poster will get credits they can spend on a spot in the future. This has a few key advantages to traditional waiting. For instance, it gives people more confidence in their options. Instead of dealing with probabilities that a spot will show up, you are guaranteed spots and can weigh your options with more information. Additionally, using the app requires less effort. Instead of having everyone in your car scan for spots as you drive around your destination, you have one destination that you go to.

How we built it

I built the frontend using Flutter. Since the app is still an early prototype and I only had ~ 1 week to build it, data is stored locally. The street view map is generated using the Google Maps API. Time to get to a destination is determined using the Google Routes API. Geolocator/geocoding is used for conversion between Latitude/Longitude and street address. Code was put through very strict linter so it should abide by most best-practices.

Challenges we ran into

I have not made many Flutter apps before, so I had to experiment a lot to get things how I liked them. For instance, I did not know how to have a central state management system. After some searching, I discovered multiple options, and settled on using Provider as a simple solution to passing data between classes. This was my first time using Google Cloud, so connecting to that platform was a struggle. However, setting up API posts went easier than I expected, and GitHub Copilot helped me with implementing the Cloud API.

Accomplishments that we're proud of

I am proud that I was able to build such a fleshed out prototype in such a short period of time. I was also able to adapt to new tools that I had little experience with. Importantly, I was able to build the app completely by myself (although I used Copilot, which was basically a teammate and a half). I am very proud of the idea that I came up with. I think the idea behind my app is quite innovative and more out-of-the-box than something like a chatbot.

What we learned

I learned a lot about the Flutter development environment and the Android SDK. I also got more experience with creating visually appealing UIs and front-end development in general. After seeing the remarkable similarities between Dart and Java, the latter of which is my most comfortable programming language, I feel more confident I can break into new fields using different languages as I already have some of the core fundamentals. The linter also taught me some interesting conventions, like cascading style.

What's next for Active Park

Eventually, I would like to build out a full backend using Firebase (or Spring Boot if I feel like challenging myself). I would also like to add additional functions, such as connecting payment options and implementing a system similar to Uber to be able to enter what car you own. I do not think making this a production-grade app is feasible anytime soon. My app's usefulness grows significantly with scale, but in the beginning when there aren't many users, it will not add much value to peoples' lives.

Built With

Share this project:

Updates