Public transport is the way of the future. It's an affordable, environment friendly way of moving around. Still many people choice their car instead. Why?

By making train rides more social and interactive we believe we can encourage people to leave their car keys at home.

What it does

TrainChat is a small social network, unique to your given train. It connects all passengers onboard allowing them to chat, share images and talk about their life decisions. It's a great way to pass time during your morning commute, keep tabs on important train information as your journey progresses and who knows, maybe you even make some friends a long the way.

How we built it

It's built using Elixir on the backend and JavaScript & React Native on the mobile frontend. The mobile application authorise passengers using the Icomera API. Each train with Icomera hardware onboard have a unique identifier. This identifier is what allow us to connect the passenger with the train's unique social network.

As soon as the passenger has been authorised the application will connect to the backend using WebSockets. From here, real time data is communicated back and forth between the mobile application and the backend.

Challenges we ran into

Early on, we split our team up developing different parts of the application. The goal was to parallelise the workload to move faster. Unfortunately, it had the opposite effect. Friday evening we had four different technology stacks, all being half-done and we were no where close to finished. We realised that with the given time constraints we would not be able to finish in time and jokingly talking about starting over.

A few minutes before boarding the train back to Stockholm, we actually did decide to start over, leaving our Swift/React Native mobile application, Crystal image service and our Rails backend API behind.

We also ran into many technical obstacles a long the way. One in particular was a race condition with a WebSocket library we decided to use. We spent a lot of time debugging technical problems instead of business ones.

Accomplishments that we're proud of

Making the progress we did considering the aforementioned challenges. We're further a head now, 09:05 Saturday morning that we were Friday night at 20:30.

What we learned

We never had a team this large on a hackathon before. We learned that you're not be able to do more just because your team is larger. It's better to focus on solving a small subset of problems and solving them really well. Reduce scope, increment continuously and develop with a demo in mind early on.

What's next for Trainchat

We see a lot of potential features that would increase the interaction and communication even more. For instance, the ability to challenge a fellow passenger in a game of Tic-Tac-Toe. Integrate with APIs providing weather data, traffic information and train announcements making the information easily accessible for the passenger.


YouTube video

A video recording of us using the app. For more details about UI check the video "Video when we try the app"


Video when we try the app

GIF when we try the app

Same as above but as a GIF if the viewer can't show mp4 for some reason :)

Team members

Everyone is invited to devpost, but we list them here as well if everyone hasn't accepted their invite.

  • Albert Arvidsson
  • Alexander Ross
  • Emric Månsson
  • Kevin Sjöberg
  • Martin Bodin
Share this project: