Inspiration
A typical passenger vehicle emits about 4.6 metric tons of carbon dioxide per year. Luckily our generation seems to be the one to take this number seriously. As such, experts predict a massive 80% drop in car ownership by 2030. This alone leaves a ton of room for preparations, programs that welcome the change, future alternatives, and Sixt seem to share our vision in building a greener future!
What it does
The project “Sixtainability” is a long term project idea that would not only prepare the metropolitan cities for a greener future, but also help Sixt expand their EV fleet due to increased awareness and access to charging stations.
Our “Sixtainability” platform allows real time analysis of problematic areas regarding charging and similar bottlenecks. Our proposed solution comes in the form of a loyalty status and a mutually beneficial contract between the loyal customer and Sixt as a reward. The platform runs using completely real-world data with exception of Sixt specific car information and user information that we didn't get the access to this weekend. Fortunately the switch between simulated and Sixt data is a couple clicks away allowing to easily integrate the official Sixt developer API into the dashboard.
How we built it
Ashmi, our backend Expert, got the responsibility of building the backend for our system using Python and FastAPI. We built different end-points using FastAPI - a modern, high performing Python framework. The app was then dockerised and deployed on DigitalOcean. Gilles, our trusty frontend guy, was responsible for building up the frontend of our project and his focus was working with the Mapbox GL API. We used React with TypeScript and Vite as well as a mix of Material UI and Tailwind CSS. Mantas, took care of most of the design related tasks since we knew Sixt standards are high when it comes to visual quality, both programmatically and presentation wise.
For the dashboard, we simulated data about a 100 users living in Munich including their name, address and their photos from thispersondoesnotexist, however we used the Google Places API to get the real life locations of the chargers in Munich as well as Sixt stations API to get a list of the Sixt stations. We also used the Google Geo-encoding API and the reverse Geo-encoding API to get the geo-coordinates of each of the items (i.e. user/charger/Sixt stations) displayed on the map on our UI.
Challenges we ran into
Even though there was not too much of a challenge in setting up the backend/developing the APIs, thanks to some of the very high performing and yet easy to use Python backend frameworks like FastAPI, deploying our application on the cloud server (Digital Ocean) took longer than expected.
Working with Mapbox on the other hand, was somewhat difficult within React, as there are many things that need to be kept in mind, such as that you are working with useRef that references the container of the map in the app. It was difficult to get set up, but as soon as we managed to have everything up and running, the real fun began. We wanted to display areas of Munich as layer polygons on top of the actual map. This was a difficult task, as we worked with hundreds of coordinate points to represent these polygons. Getting them to be displayed turned out in the end to actually be the easy part. We intended to group markers within these polygons and for that it was necessary to evaluate if a point with latitude and longitude information was inside the polygon or outside. To achieve that we implemented a custom Ray-casting algorithm, that made use of the crossing number algorithm and the even-odd rule. It was quite a head scratcher to implement that algorithm efficiently.
We also missed the mid-night snack (read Pizza) while trying to deploy our application which was by far the largest setback. 😦
Accomplishments that we're proud of
It was very rewarding to solve the challenge of working with a map. We mostly loved working on gathering all information of users, charging stations and areas and to build up a meaningful and efficient data model.
In the end we even ended up having a fully fledged simulation based on real world data, as well as keeping the possibility to switch to Sixt datasets if the opportunity would arise to. From the simulation we were able to extrapolate potentially problematic areas for Sixt to consider investing in, as well as start adapting their infrastructure to improve the charging in underdeveloped parts of the city - all while selling it as an elite loyalty program rewarding old customers with a long term sustainable solution. (and hopefully more vouchers)
What we learned
- Backend can (contrary to popular belief), be fun
- To have fun while being stressed/under-slept.
What's next for Project: Sixtainability
While we obviously couldn’t implement everything we thought of during the hackathon, the time is definitely on our side. Only time will tell whether the idea get’s significant interest from Sixt or becomes a standalone startup in the future. We’re definitely interested in pursuing the idea after the end of the Hackathon and are very confident that as the years go on and the demand for EV’s goes up, some form of charging-outsourcing project will become a reality, we can only hope that we will be the ones in charge! 🙂
Built With
- canva
- digitalocean
- fastapi
- flask
- husky
- python
- react
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.