Inspiration

Think about visiting your family on the other side of the country. You get back home after having had a relaxing weekend just to realize you forgot your favorite umbrella there. They do not want to send it via the Post, because the experience is no fun. They do not want to get a courier, because it is too complicated with all the forms and can actually be expensive. We thought, why not get help from the people driving all across the country every day!

What it does (right now)

To sum it up, people select they want to participate as couriers, they set the stop they will be riding from (e.g. Stockholm C) and the stop they will be riding to (e.g. Åre station). They are provided a list of times when public transport operates between those two locations. They select one of the times and have registered that they will be available then.

What it does (in theory)

To sum it up, people select they want to participate as couriers, they set the stop they will be riding from (e.g. Stockholm C) and the stop they will be riding to (e.g. Åre station). They are provided a list of times when public transport operates between those two locations. They select one of the times and have registered that they will be available then.

The client in this situation is the sender of the package. This person opens the app, enters what station they want to drop off their package at and to where they want it delivered. Then a list of available couriers is provided along with the times they are departing and expected to arrive, as long as there are no delays with the public transportation itself. They select a time they like and place a request for delivery.

The courier receives a message stating one of his/her trips has a person asking for a delivery. They confirm the request and chat with the sender to arrange pickup of the package. The package is confirmed as having been dropped off.

In a perfect world, the train can be tracked by the sender and receiver, notifications are sent when the train approaches the destination. Drop-off is arranged. The package is confirmed as being delivered. Everyone's happier.

How we built it

First, we sat down and talked - designs were sketched, APIs were drafted, ideas were flowing. Eventually, we put together a web application running on Kendo backed by a Node.js service running along PostgreSQL for structured data (trips, deliveries, status updates) and Redis for key-value pairs of tokens (log-in validation, session IDs). We use GTFS data for stop listing, the ResRobot API for route planning purposes as well as the 46elks SMS sending functionality for token delivery.

Challenges we ran into

Time was our worst enemy. The initial discussion phase took longer than we would have liked and even with all hands on deck, there simply was not enough of the precious resource known as time. Additionally, we were trying to experiment with technologies which we had essentially never touched beforehand so we spent time doing that before picking up a stack that we felt confident with.

Accomplishments that we're proud of

Most notably, we are proud of our team spirit. We pulled off the nights with very little sleep, tried to let some sleep a bit but still woke them up when help was needed. In essence, we held each other going at times when everything felt impossible. We are proud of having taken part in this year's Trainhack in general.

What we learned

Two main takeaways:

  • Focus more on the Minimum Viable Product, rather than the nice flashy extras that everyone recognizes will not be doable due to time restrictions.
  • Do come up with your attack plan in your head before the event and do not trust your fellow team members will have come up with any good ideas in advance.

What's next for QRier

We came into the event with the goal being to have fun with technologies we have not worked much with, and as of just right now, we do not have any plans on pushing the project further. We partially blame the wild ride and exhaustion of working two nights in what at times can be described as a very shaky train as well.

Built With

Share this project:
×

Updates