The project was inspired by the difficulty in applying for delay compensation (Förseningsersättning) on the SL homepage. Instead of a long and complicated form we wanted to make a simple app where people could apply for compensation right away as they are being delayed or shortly after.
What it does
Users begin with filling out some basic information like what lanes they want to be subscribed to and what bank account to send the compensation to when the bus, train, metro or tram turns out to be late. After setting this up the users can open the app at any point and apply for delay compensation in under a minute by entering what transportation method was used, start and end-station and how late it was. The app will than use SL's förseningsformulär in the background to autofill the information and send a request for compensation. If the request failes, the user has to fill in the missing parts in the form.
Users can also specify which lines they ride the most and receive push notifications when that line experiences a delay so they can ask for compensation right away.
How we built it
We discussed quite a bit on how we would build this - since we first off didn't really know that features to include in the project. We discussed building the app using Flutter - but instead decided on using React-Native since a couple of us already had quite a bit of knowledge in regular React. The push notification service is built using Python and the Trafiklab Förseningsersättning 2 API to send out when a bus, train, metro or tram that you are subscribed on is late.
Challenges we ran into
SL Does not provide an API for Förseningsersättning, which meant we had to figure out a way to prefill their form and submit it with data entered by the user in our app. We investigated multiple approaches before finding one that worked. First off our idea was to reverse engineer their form to be able to generate some sort of authentication key to send with the request to get allowance for posting the form. We knew this would be quite difficult so at the same time we worked on using a web-view inside of React-Native instead. We ended up rendering the web-view and autofilling it in the background since this went way faster and in general felt more right.
Accomplishments that we're proud of
Although we merged two teams together to work on this project we really managed to create something quite good and good looking as well. We really built something that's going to be used for real and help peoples days get a little bit better and easier and that's something we are really proud over.
What we learned
We really learned that no matter if we know each other in the team from the get-go most people are actually really good at working in teams although they might not think they are. We also got hands-on experience with React Native and learned quite a bit more about it and also how to automate pre-filling web forms.
What's next for Spåris
Publishing on iOS / Android app store!