- Interface for admin to post notifications
- Interface for users to see notifications
- Python backend for managing notifications
- Lists notifications:
- Display notifications with details such as sender, recipients, message content, timestamp, send status, and urgency level.
- Actions:
- View notification details(show recipients, time for which notification is scheduled, etc).
- Delete notifications(only the future notifications).
- Notification can be sent to
- all users
- all users in an org
- all users in an org having role >= manager
- a single-user
The send Notification form will have:
- Message Content:
- Text area for entering the notification message.
- Urgency Level:
- Can be a toggle switch to set urgent to
True
orFalse
.
- Can be a toggle switch to set urgent to
- Send Now or Schedule:
- Option to send the notification immediately or schedule it for a later time.
- Security:
- Ensure authentication and permission-based access to the notification system.
- Display icon/button in the header:
- Indicates notifications.
- The badge indicates unread notifications.
- Clicking the icon/button reveals the notifications list:
- Cards show sender, message, timestamp, and urgency.
- Click the notification to view full details:
- Access preferences/settings:
- Manage channels and notification preferences.
- Highlight urgent notifications with a different color.
- Interface updates in real-time for new notifications.
- Authenticate users to access notifications.
- Apply permissions based on user roles.
Creation of a Django model named Notification
to store notification details such as:
- Author(sender)
- Message content
- Timestamp
- Urgency level
- Scheduled Time
- Sent Time
Creation of a Django model named Notification Recipients
to store n details such as:
- Notification Id (Foreign Key)
- Recipient
- Read status
Creation of a Django model named User_Preferences
to store user's preference details such as:
- Enable discord notifications
- Enable email notifications
- Discord Webhook (to receive discord notification)
- Email Id (to be taken from the user object)
Development of Django REST Framework API endpoints for:
- Fetching notifications for a single user(through user id).
- Mark notifications as read or unread
- Managing user notification preferences.
Development of Django REST Framework API endpoints for:
- Creating new notifications.
- Fetching notification history.
- Deleting notifications(only the future ones).
- Creation of handler functions to process notifications and send them via configured email and Discord channels.
- Use
SendGrid API
for emails and theDiscord Webhooks
for Discord messages.
Ensure that notification history is stored in the database for auditing and reference purposes.
Week 1 is dedicated to Requirement Gathering and Planning. Here, the project scope and objectives are defined, and requirements for the admin and user panels are gathered separately.
Week 3 is for the Backend Development process. Here, database models for notifications and users are implemented, and RESTful APIs for core functionalities are developed.
UI components for the user notification interface are designed, and features for viewing notifications, managing preferences, and marking notifications as read are developed.
JEST tests are written for the User Panel Frontend application.
UI components for the admin dashboard are created, and admin-specific features such as notification creation and preference management are implemented. Integration with backend APIs for data retrieval and manipulation is also carried out.
Any remaining features or enhancements for both admin and user panels are implemented. Support for responsive design and accessibility is also added during this phase.