Wout Salembier - Digital Developer & Designer

Card Background

Solid applications my experience with building one

When I started working for Wheelhouse, I had the honour of doing my first Wheelhouse project together with Konsolidate. Konsolidate believes that people should gain control over their data. Firstly, this blog post will explain precisely what solid is and how I got to work with it.

What is this Solid technology?

Solid is an exciting new project led by Tim Berners-Lee, the inventor of the World Wide Web. The Solid project aims to radically change how Web applications work today, resulting in true data ownership and improved privacy. Solid offers us three main points: true data ownership, modular design, and reusing existing data.

Solid consists of Solid Servers and Solid Pods. A Solid Server hosts one or more Solid Pods. Pods are where you store your data:

  • Each Pod is fully controlled by the Pod owner (i.e., you).
  • Each Pod's data and access rules are entirely distinct from other Pods.

Finally, you can get a Pod from a Pod Provider, or you may choose to self-host your Pod.

My Solid demo

Konsolidate tasked me to demo a Solid application with your digital Covid certificate. In essence, it’s an office use case: who is safe to work at the office and who should work remotely? As a result, the client can see who is and isn’t safe. As Solid's goal is to give people back control over their data, the employee can share their data with their manager whenever they want to share this information. (Needless to say: we do not use case in production as businesses cannot ask this of their employees. This project is meant to learn something).

As this is a Solid application, we built it on the principle of sharing minimal data. You only see what you need to see. Therefore, we split the app into two separate apps:

  • One for employees
  • One for management

The employee app stores your certificate, and it has a dual purpose, as it can also replace your usual Covid Safe app. Your COVID-19 safe information is stored in your personal Pod, and you can access this by logging in to your desired Pod provider.

The management app checks if employees are safe working at clients' offices. The only data they see is the employees' names and availability at that time.

The flow of the application

Informational image

The flow looks like this:

  1. The employee creates an account on a Solid Pod provider. With this, they can access the employee app.
  2. When they have access to the employee app, they will need to fill in their Covid information.
  3. The information will be sent to their personal Solid Pod, and the dates and usernames will be saved on a database.
  4. Only the management app can access this data.
  5. The sales manager can then share this data with his clients to prove the employees are safe from COVID-19.

Used technologies

Informational image
  1. PDF.js: is used to read the certificate and get the necessary data.
  2. MobX: is used to manage the state of the application.
  3. Inrupt SDK: is used to connect to the Solid Providers. This writes and reads data to the Pods.
  4. Firebase Realtime Database: here, we send the needed data to share with the manager. We also store the registered managers here.
  5. I wrote the code in TypeScript and React.js.

I wanted to challenge myself while working on this project, so I chose many technologies. Some of them were brand new to me, and some of them I wanted to get to know better. The new technologies were challenging initially, but I got the hang of it after some time. I didn’t stop at the basics of the technologies; I wanted to go deeper and use everything that could have made the project better and easier to use.

Conclusion

In the six weeks of working on this project, I learned much about Solid and its capabilities and possibilities. I also learned what it can and can’t do. Even though Solid is still in beta, I believe this technology will rise in popularity. In addition, I had the pleasure of discovering TypeScript. I always wanted to write something in TypeScript but never had time for a project. If you have the time, you should try to create something simple with Solid. This will be the next step in giving the user true data ownership.