-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Notification System Version2(backend) #996
Open
Catherine9898
wants to merge
101
commits into
source-academy:master
Choose a base branch
from
Catherine9898:sv
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Create Notifications module and NotificationType model - Start migration for adding notifications - No functionalities added yet only template code
notification entry
Changes: * Replaced is_enable to is_enabled for Notification Preferences * Update default is_enabled to true for Notifcation Types
`import_config` must always appear at the bottom for environment specific configurations to be applied correctly. All configurations after this line will overwrite configurations that exists in the environment specific ones.
- remove auto-generated controllers and views that are not used
If user preference has no time option, use the time_option from notification_config instead. This is so that the behaviour of these users with no preferences would always follow the default chosen by the course admin
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This project builds upon the work of Junyi and Santosh, enhancing the notification system of Source Academy. This project builds upon the work of Junyi and Santosh, enhancing the notification system of Source Academy
First and foremost, a comprehensive analysis of the existing notification system reveals its lack of security assurance, and the project's codebase exhibits issues in terms of code style. The following is an in-depth analysis of these concerns.
There are significant issues with the backend routing. The current system fails to differentiate between various roles and their respective pages, raising security concerns. To address this, I've implemented a separate router for different roles, supplemented by appropriate middleware for verification and validation, thereby reinforcing security. The backend must remain robust, independent of the frontend's behavior, as security forms the bedrock of the entire system.
Moreover, there are design flaws in the overall system architecture. The conceptual framework of Source Academy involves creating courses, each housing various types of assessments. The notification module should logically belong to each distinct assessment type. Unfortunately, this aspect was overlooked in the previous design. Consequently, I've restructured all notification system-related routes under distinct courses, implementing middleware to check the course registration information prior to accessing specific routes.
Maintaining consistent language style within the Elixir project is crucial. Elixir projects are characterized by pattern matching and the use of a piping fashion. Adhering to a consistent language style enhances the maintainability and scalability of the code repository.
The project incorporates Oban for task processing and Bamboo for email delivery. The notifications have been categorized into three types: trigger notifications, scheduled notifications, and periodic notifications. Among these, only scheduled notifications are time related. The entire notification system has been reconstructed, encompassing data, backend business logic, and frontend page design, based on these considerations. Moreover, future extensibility for various functionalities of the notification system has been considered.