Have you ever planned a trip with friends living in different places? Everybody knows that organizing the distribution of cars is a pain in the neck: Who lives nearby? Which car will play good music? So, what could we do save the maximum money and enjoy the journey at the same time?
What it does
Our web app allows you to create an event in order to share it with your friends and organize all the trip distribution. To create the event the web will ask you about the destination and for each person travelling their information about where do they come from and if they can come by car how many seats are available and finally which type of music wants to listen to.
Finally, the app will show you the best distribution between all the members in order to minimize the travel distance and thinking about the music style. Also, it is possible to invite your mates by SMS.
How we built it
Frontend and backend are very different components connected by API requests.
At frontend, we can see a React application that uses the library groummet in order to use the UI components and integrated into a Docker composer. In the other side, we have the backend implement with Python that for the API calls use Flask and OpenAPI (connected themselves with Connexion), also integrated by Docker compose. This part includes all the logic about best people distribution and generates the playlists. All this system is finally deployed in a Google Cloud VM to run it.
Challenges we ran into
We first started trying to set up the Google Cloud Platform and the Domain in order to let the DNS propagate during the hackathon. But we had trouble trying to open a port in the Google Cloud Virtual Machine since the university Wi-Fi didn't allow us to connect to some ports. We finally opted to make a different configuration with Nginx.
Accomplishments that we're proud of
Not only the application that we built. The way we organized the code, we used docker to deploy the app anywhere, we deployed it to Google Cloud Platform, learned to configure the firewall rules. We are also proud of the independence between the two components (Client and API) which allows us to build the project in a better way. And, for sure, making a project that you are thinking about for months real is always a satisfaction.
What we learned
Regarding the Backend, we learned about geolocation APIs like Google Maps or Here API. Also, working in an algorithm which was able to organize all the groups and generate different routes for them was a challenge where we have learned a lot. Regarding the Frontend, one of the members, that have been taking care of these tasks, has never built nothing in ReactJS. So was a great opportunity to learn new cool frameworks as ReactJS is.