Real-Dev-Squad / mobile-app

The main app for our organization
MIT License
12 stars 30 forks source link

RFC for the Notification service #273

Closed shreya-mishra closed 10 months ago

shreya-mishra commented 10 months ago

Issue Description

Create the RFC of notification service in which we need whenever user assign the task to someone it should notify the user with the label whoever he assigned the task. If user has the same label in interested list then he will get notified.

shreya-mishra commented 10 months ago

Notification Service RFC The design and specifications of the Notification Service, which allows users to send notifications to selected RDS groups or members. The service aims to streamline communication within the organization.

Table of Contents

The Notification Service is designed to facilitate communication by enabling users to send notifications to predefined RDS groups or specific members. It is intended to improve information sharing and collaboration within the organization.

  1. Requirements

Functional Requirements:

Users can select RDS groups or individual members.
Users can compose notifications with a title and description.
Notifications can be sent to the selected recipients.
Users can view sent notifications and their status.

Non-functional Requirements:

Scalability to handle a growing number of users and notifications.
High availability and reliability to ensure uninterrupted service.
Secure user authentication and data encryption.
Low latency for notification delivery.
  1. System Architecture

The Notification Service follows a client-server architecture:

Client: Web-based user interface.
Server: Backend application handling notification processing and delivery.
Database: Stores user data, notifications, and group information.
Notification Gateway: Interface to deliver notifications via various channels (email, SMS, etc.).
  1. User Interface Notify Tab:

    Users select RDS groups or members. Users click the "Notify" button to access the notification form.

Notification Form:

Users enter recipient group or member.
Users provide a message title and description.
Users submit the form to send the notification.
  1. Notification Process

    User submits the form. Server processes the notification. Notifications are sent to selected recipients via the Notification Gateway. Sent notifications are logged for future reference.

  2. Security Considerations

    User authentication: Users must authenticate to access the service. Data encryption: Sensitive user data and notifications are encrypted. Access control: Role-based access control to restrict unauthorized actions. Regular security audits and updates to address potential vulnerabilities.

  3. Conclusion

The Notification Service enhances internal communication by providing a user-friendly interface for sending notifications to RDS groups or individual members. It meets functional and non-functional requirements, ensuring secure and reliable communication within the organization.

FlowDiagram image

In this diagram:

Users start at the "Notify Tab" where they have the option to select RDS groups.
After selecting the groups, they click the "Notify" button.
This action opens the Notification Form, where they can enter the recipient group or member, message title, and description.
Users fill out the form.
Users fill out the message title.
Users fill out the message description.
Users submit the form.
The service processes the submission and sends notifications to the interested candidates.
The flow loops back to the "Notify Tab" to allow users to notify additional groups or members.

Please adapt and expand upon this document as needed to meet the specific requirements and expectations of your project.

shreya-mishra commented 10 months ago

For the mobile app in our notification service project, we have several options for integrating messaging services to facilitate communication. The choice of messaging service depends on our specific project requirements and preferences.

We have some options for messaging service:

For the mobile app in our notification service project, we have several options for integrating messaging services to facilitate communication. The choice of messaging service depends on our specific project requirements and preferences. Here are some popular messaging service options we can consider:

Firebase Cloud Messaging (FCM):
    FCM is a free, scalable messaging platform provided by Google.
    It supports both Android and iOS platforms.
    FCM allows you to send messages to individual devices or topics.
    It provides features like notification payloads, data payloads, and device group messaging.

Twilio Programmable Messaging:
    Twilio offers programmable messaging services for SMS, MMS, and chat.
    It supports multiple channels, including SMS, WhatsApp, and chat messaging.
    Twilio provides APIs for integration with mobile apps on various platforms.

Pusher Chatkit:
    Pusher Chatkit is a chat API service that simplifies building real-time chat features.
    It offers features like typing indicators, message history, and group chats.
    Chatkit can be integrated into both Android and iOS apps.

SendBird:
    SendBird is a chat and messaging API service that supports real-time chat, voice, and video.
    It offers features like group chat, push notifications, and file sharing.
    SendBird has SDKs for Android and iOS.

Amazon Simple Notification Service (SNS):
    If you are already using AWS services, Amazon SNS can be integrated into your mobile app.
    It supports push notifications and SMS messaging.
    SNS can be used for both Android and iOS apps.

Microsoft Azure Notification Hubs:
    If you are using Azure services, Azure Notification Hubs can be integrated into your app.
    It supports push notifications to Android, iOS, and other platforms.
    Azure provides APIs and SDKs for mobile app integration.

Custom WebSocket Solution:
    You can develop a custom WebSocket-based messaging solution to have full control over the messaging infrastructure.
    This approach provides flexibility but may require more development effort.

The best messaging service for our React Native mobile app will depend on our specific needs and requirements. If we are looking for a cross-platform solution that is easy to integrate, then FCM is a good option. If we need a more customizable solution with more features, then Twilio Programmable Chat or Pusher Chatkit are good options. If we are looking for a messaging platform that is specifically designed for mobile apps, then Sendbird is a good option.

The exact price for messaging services for RN mobile app will depend on a number of factors, including the number of users, the features you need, and the messaging service you choose. However, here is a general overview of the pricing for some of the most popular messaging services:

**Firebase Cloud Messaging (FCM)**: FCM is free to use for up to 1 million messages per month. After that, there is a nominal fee of $0.0025 per message.

**Twilio Programmable Chat**: Twilio Programmable Chat has a free tier that allows you to send up to 100,000 messages per month. After that, there is a fee of $0.0015 per message.

**Pusher Chatkit:** Pusher Chatkit has a free tier that allows you to send up to 50,000 messages per month. After that, there is a fee of $0.0005 per message.

**Sendbird:** Sendbird has a free tier that allows you to send up to 10,000 messages per month. After that, there is a fee of $0.0005 per message.

Once your app is developed, you will also need to pay for hosting and maintenance. The cost of hosting will vary depending on the size and traffic of your app. However, you can expect to pay anywhere from a few dollars to hundreds of dollars per month for hosting.

Overall, the cost of developing and maintaining a React Native mobile app with messaging services can vary widely depending on our specific needs. However, we can expect to pay anywhere from a few thousand dollars to tens of thousands of dollars for a basic app.

sahsisunny commented 10 months ago

Could you please add some user stories? Other than that, everything looks good to me.

shreya-mishra commented 10 months ago

Could you please add some user stories? Other than that, everything looks good to me.

RN working on the POC, if everything gets completed , will be creating the tickets. Already Figma design is in progress.