GSOC'23 user managment
As part of my contributions to the project, I fixed the code related to user authentication. Specifically, I worked on the login, signup, forget password, reset password, and personal page features. This involved identifying and fixing bugs in the existing code, as well as implementing new functionality where necessary.
In addition to the authentication work, I also implemented a notification flow feature. This allows users to choose which notification channels they want to receive updates on (e.g. email, Slack, Discord), and then receive notifications when any of their selected networks has any deviation.
If a user chooses Discord as their notification channel, they will be prompted to enter information about which channel they want to receive notifications in. Once this information is provided, the user will be redirected to a Discord page where they will be given a code. This code is then sent to the backend, which uses it to make a request to the Discord API and retrieve information about the user and access token. This information is then saved for future use.
The same applies to the slack api, If a user chooses Slack as their notification channel, they will be prompted to enter information about which channel they want to receive notifications in. Once this information is provided, the user will be redirected to a Discord page where they will be given a code. This code is then sent to the backend, which uses it to make a request to the Slack API and retrieve information about the user and access token. This information is then saved for future use.
This is a project that includes a background worker using Celery and a scheduler using Celery beat. The worker runs once every hour and is connected to Kafka. It checks for any unread alarms for the tasks group and if there are any, it gets all the users that listen to this network. It then checks if the user has a notification flow using any of the channels (email, Discord, Slack) and if yes, it sends an alarm message using that channel to notify the user.
Overall, my contributions to this project involved fixing authentication-related bugs and implementing a new notification flow feature. I believe that these changes will improve the user experience and make the project more useful for its intended audience.