Kaffekassan is a micro-economy built on trust. Here we have digitized the traditional kaffekassa that’s ubiquitous in workplaces, clubs and organisations.

My role

Mostly UI programming in Java. Swish integration.


Team project at Malmö Yrkeshögskola together with  Max Modesto Wallin, Ola Göransson and Jonas Haag.

Max Modesto Wallin came with the idea of creating a micro-economy bank application. After som discussions we decided to make a digitization of the traditional Kaffekassa.

Our main challenge was structuring the database to avoid overlapping but also make it easy to access and change many different nodes at the same time. We use Cloud Firestore realtime-datbase that makes querying simpler than in Firebase. Livedata monitors the database and propagates out to the UI through a repository, usecase and a viewmodel. We built usecases that handles every specific task on a screen, ex. “get all groups where user A  is member” or  “get all transactions from User B”.

Admin Screen

The admin-screen was a challenge to fit all the tools the admin needs into a simple intuitive interface. I decided to use the viewpager with tab-bars and to maximise the space for the pages, the toolbar will collapse on scroll. A bottomsheet is used for the transactions and QR-code. The QR-code is a Firebase dynamic link that will guide the user to google-play store, the link persists through the installation and once installed it joins the group for you. Making it easy for new users to gain access to their group. The admin also get a clear view of all the transactions that’s been taken place within the group, while the user only have access to their own transactions.

Swish payments

To manage a “Kaffekassa” successfully a simple payment solution is essential. With this feature you can send money directly to your administrator and your account in your group will be updated, and you can buy more stuff. Previously a common scenario would be that people borrow from the treasury or decides to pay later, thus undermining the whole system based on trust. With swish payments and it’s ubiquity in Sweden, there are no more excuses. The integration is pretty simple, I created a JSON of the parameters (receiver, amount, message etc.), URL-encoded it and started swish. Obviously checking if the app is installed on the device first. When the transaction is done, swish closes and takes you back to Kaffekassan with some result parameters.