Devlog #1 - Project Management Prototype and Initial user authentication #14
JonasBerx
announced in
Announcements
Replies: 1 comment 1 reply
-
Thanks @JonasBerx. A note about the form, not the content: If we want to be more hardcore, we can use architectural decision records for such kind of information and commit it directly to the repository. This tool might be helpful, https://adr.github.io. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Devlog 1 : PIX project management and user authentication solutions
As an attempt of documenting the development process of this rather large toolset. I have decided to write down my findings in every iteration. Explaining the thought process behind the ideas and problems faced.
The first iteration of the PIX prototype had as goal to implement a notion of a project management system. I took it upon myself to also dive deeper into open-source identity providers. An early adoption of such a system would prove valuable in maintaining a certain level of security. Furthermore, it can work with minimal configuration and removes the development of a custom user management system out of our hands.
Project management solution
To implement a project management solution, the notion of a Project needs to be established.
In essence, a project could just be a folder containing a number of files. In a database environment, this project is just a table with metadata about the project and a list of file ids that represent the relationship between the project and its files.
One of the problems that arose was the cascade that has to happen when a project is deleted. As a file, which is in a different table is not naturally deleted. Similarly to this, a file can have a certain file_type related to it. So when a project is deleted, the related files have to be deleted as well as the file - tag association.
As of the current state of the project, you can create a project, delete a project and its related files, upload a file to a certain project, add a file_type tag to a file, download a created file and delete a certain file in a project. The next functionalities for this solution are the ability to change the project name, change the file_type tag that is given to a file when uploading, as well as changing the name of a file after uploading.
User authentication system
Initially we explored Keycloak as IDP Management system. Sadly, as powerful as it may be, Keycloak has horrible documentation and it is really hard to find relevant community support.
I read about Zitadel, they offer an open-source, self-hosted version. This allows us to avoid the commercialized "Pay as you go" version.
In terms of implementation, Zitadel is very well documented, has a Discord server where you can discuss issues with developers (Github issues also work, but communication is slower).
I was able to implement the user authentication workflow with Zitadel. The customization is quite extensive so a custom registration workflow has also been implemented. One future implementation could involve setting up an SMTP server so email-verification can be enabled and other IDP's like Github Oauth or Google Auth can also be introduced into PIX.
Closure
The Pull request containing the issues linked to this iteration can be found here #13
https://zitadel.com/docs/
Beta Was this translation helpful? Give feedback.
All reactions