The inspiration for this app was to create a system that is able to handle thousands of calculations per second, but still maintain a smooth, real-time updating UI for users. If designed well, our app could exhibit good scalability which could be useful, should the system ever require an expansion.
What it does
Taxiify maps the position of taxis in real time on a clean map-based UI. Once some taxis are being mapped, 'Users' can be placed on our map. Once a user(s) is placed, our app would update, in real time, the ID and distance of the closest taxi available.
How I built it
Since we did not have actual Taxis to map, we used a Python script to generate random paths for these taxis to follow. The script did everything from creating, deleting, and updating Taxi data. Our script was ran periodically from our Node.js backend using a cron job.
The taxi data is sent to our Firebase DB. A Node.js backend listens for changes in our firebase, and pulls any necessary data.
Once the data is pulled with Node.js, a React front-end is able to display the contents of our DB, in real time, while, continuously doing and updating calculations of distance for each user and each cab.
Challenges I ran into
Much of the challenge with this project revolved around DevOps. We ran into tonnes of problems with setting up servers and connections, which drew us back many hours.
Also, none of us had ever used any of the tools that we ended up using for this project. So a lot of the time was spent learning how to use these tools, and then how to extend them to our project.
Accomplishments that I'm proud of
I am happy that we were able to come up with a clean, understandable System Architecture. Once this was out of the way, we were able to focus all of our energy onto building the app. This went to show how important an understandable plan can be.
What I learned
I learned that DevOps, while tremendously annoying, is of critical importance to any project. To avoid frustration in the future, it is important to do any DevOps work before hand as to not lose motivation during the building process. Also, I learned that learning new tools from scratch may not be the best idea to do at a Hackathon, since time is of the essence. However, every groupmate did acquire at least one new skill and that is a victory in and of itself.
What's next for Taxiify
Scalability, Scalability, Scalability...