Solid applications - my experience with building one
When I started working for Wheelhouse, I had the honor to do my first Wheelhouse project together with Konsolidate. Konsolidate believes that people should gain control over their personal data. Firstly, this blog post will explain what precisely Solid is and secondly, how I got to work with it.
When I started working for Wheelhouse, I had the honor to do my first Wheelhouse project together with another Raccoons venture, Konsolidate. Konsolidate believes that people should gain control over their personal data. Firstly, this blog post will explain what precisely Solid is and secondly, 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 the way 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 of a Solid application that holds 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 choose to 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 safe information is stored in your personal Pod, and you can access this by logging in to your desired Pod provider.
The management app is used to check if employees are safe when working at the clients' offices. The only data they get to see is the employees' names and their availability at that time.
The flow of the application
The flow looks like this:
- The employee creates an account on a Solid Pod provider. With this, they can access the employee app.
- When they have access to the employee app, they will need to fill in their Covid information.
- The information will be sent to their personal Solid Pod, and the dates and usernames will be saved on a database.
- Only the management app can access this data.
- The sales manager can then share this data with his clients to prove the employees are Covid safe.
- PDF.js: is used to read the certificate and get the necessary data.
- MobX: is used to manage the state of the application.
- Inrupt SDK: is used to connect to the Solid Providers. This writes and reads data to the Pods.
- Firebase Realtime Database: here, we send the needed data we have to share with the manager. We also store the registered managers here.
- I wrote the code in TypeScript and React.js.
I wanted to challenge myself while working on this project, so I chose many different technologies. Some of them were brand new for me, and some of them I wanted to get to know better. The new technologies were challenging at first, 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.
In the six weeks of working on this project, I learned a lot 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 found the time to do a project with it. If you have the time, you should try to create something simple with Solid. This will be the next step of giving the user true ownership of their data.