Sunbird-cQube / uci_integration

1 stars 9 forks source link

#4: User registration for the topics with preferences #5

Open invinayak007 opened 6 months ago

invinayak007 commented 6 months ago

Description

This ticket revolves around implementing a User Registration System for cQube, allowing users to subscribe to various topics with personalized preferences. Additionally, the project involves tracking basic statistics related to message deliveries for enhanced user insights.

Key Objectives

Implementation Steps

Learning Path

Project Set Up

To set up the project on a system, follow these guidelines:

Acceptance Criteria

The success of this project will be determined based on the following criteria:

Out of Scope Elements

The following elements are considered out of scope for this project:

Key Milestones

Product Name

cQube

Project Name

cQube - Create a cross drill-down service and a breadcrumb service for reports

Organization Name

Tibil computer solutions Pvt Ltd

Tech Skills Needed

Python

Category

Feature

Mentor(s)

@invinayak007

Complexity

High

c4gt-community-support[bot] commented 6 months ago

Hi! Important Details - These following details are helpful for contributors to effectively identify and contribute to tickets.

Please update the ticket

Himasnhu-AT commented 6 months ago

Hi I'm himanshu, from NIT-KKR with college chapter of C4GT

SOLUTION:

I am excited to take on the challenge of implementing the User Registration System for cQube. Here's a proposed solution along with clarifications for the specified doubts:

1. Database Integration:

Solution:

We will use a relational database for storing user profiles, topic subscriptions, and preferences. Considering the complexity of the project, PostgreSQL or MySQL can be suitable choices. A basic schema will include tables for users, topics, subscriptions, and preferences. The schema can be refined based on specific requirements.

Clarification:

It would be helpful if you could provide any specific preferences regarding the database system or a more detailed schema. Otherwise, we can proceed with a flexible design that can be adjusted later as needed.

2. User Authentication System:

Solution:

For secure registration and login, we'll implement a basic email-password authentication system. OAuth might be considered in the future for enhanced security and user convenience, but for now, a standard email-password setup will suffice.

Clarification:

If you have any specific preferences or concerns regarding authentication methods, please let me know. Otherwise, we'll proceed with a standard email-password setup for the initial implementation.

3. Front-end Interface and Mailing Service:

Solution:

We'll develop a clean and intuitive front-end interface using a web development framework like Django or Flask. As for mailing services, we can utilize SMTP for basic email functionality. Integrating external services like nodemailer, WhatsApp API, or Telegram bot might be considered in future iterations, but for now, we'll focus on a solid and user-friendly interface.

Clarification:

If you have specific preferences or modifications in mind for the mailing service, please provide details. Otherwise, we'll proceed with a basic SMTP setup for email functionality.

I'm looking forward to your input on these points. Once we have the necessary details, we can kick off the development process, starting with the User Registration System. Let me know how you'd like to proceed!

Shruti3004 commented 5 months ago

Hi I'm himanshu, from NIT-KKR with college chapter of C4GT

SOLUTION:

I am excited to take on the challenge of implementing the User Registration System for cQube. Here's a proposed solution along with clarifications for the specified doubts:

1. Database Integration:

Solution:

We will use a relational database for storing user profiles, topic subscriptions, and preferences. Considering the complexity of the project, PostgreSQL or MySQL can be suitable choices. A basic schema will include tables for users, topics, subscriptions, and preferences. The schema can be refined based on specific requirements.

Clarification:

It would be helpful if you could provide any specific preferences regarding the database system or a more detailed schema. Otherwise, we can proceed with a flexible design that can be adjusted later as needed.

2. User Authentication System:

Solution:

For secure registration and login, we'll implement a basic email-password authentication system. OAuth might be considered in the future for enhanced security and user convenience, but for now, a standard email-password setup will suffice.

Clarification:

If you have any specific preferences or concerns regarding authentication methods, please let me know. Otherwise, we'll proceed with a standard email-password setup for the initial implementation.

3. Front-end Interface and Mailing Service:

Solution:

We'll develop a clean and intuitive front-end interface using a web development framework like Django or Flask. As for mailing services, we can utilize SMTP for basic email functionality. Integrating external services like nodemailer, WhatsApp API, or Telegram bot might be considered in future iterations, but for now, we'll focus on a solid and user-friendly interface.

Clarification:

If you have specific preferences or modifications in mind for the mailing service, please provide details. Otherwise, we'll proceed with a basic SMTP setup for email functionality.

I'm looking forward to your input on these points. Once we have the necessary details, we can kick off the development process, starting with the User Registration System. Let me know how you'd like to proceed!

Hey @invinayak007 can you please check that?

invinayak007 commented 5 months ago

Hi Himanshu,

Can you DM me @invinayak on Discord.

Thanks, Vinayak

Himasnhu-AT commented 5 months ago

Okay 👍

Himasnhu-AT commented 5 months ago

Libraries used:

user Flowchart:

Issue #4 uci-integration excalidraw

jayClean commented 3 months ago

Hi I'm Interested in working on this issue.

rising0raj commented 3 months ago

Hey, @invinayak007 , I would like to work on this . I have gone through the code base can you assign this to me if it is open

adityagit-creator commented 3 months ago

Hi @invinayak007 , @Shruti3004 and @Himasnhu-AT ! I am interested to work on this issue. I have good grip on python .I am really excited to contribute to this project.Could you please assign it to me.

kovida09 commented 3 months ago

Hey @invinayak007 . I am familiar with Django framework as I have done projects earlier using this framework. I would like to contribute to this project if it is open.

BrahmjotSinghsingh commented 3 months ago

I understand the issue and have a good understanding of python, would greatly appreciate to work on the project. Could you please assign this to me ?

adityagit-creator commented 3 months ago

### After analyzing the problem what I think the solutions so we can tackle this problem :

  1. Seamless Integration of cQube with Unified Communication Interface (UCI) Services: This part involves integrating cQube with UCI services to enable smooth communication. You want businesses to receive real-time notifications customized to their preferences. To achieve this, you can use Python technologies like:

    • Django: A web framework for building the backend API that handles communication between cQube and UCI services.
    • Requests: A Python library to make HTTP requests and interact with UCI services.
  2. Message Generation System: This system is responsible for generating messages and ensuring they meet certain criteria or thresholds. It should also handle message queues efficiently. For this, you can consider using:

    • RabbitMQ: A message broker that provides a message queue for efficient handling of messages.
    • Python's built-in queue module: This module provides data structures like Queue and PriorityQueue for managing message queues.
    • Python's logging module: This module can help you log messages and track important events during message generation.
  3. Message Routing Service: The goal of this service is to optimize communication by intelligently routing messages based on predefined topics and recipients. Python technologies that can be useful here include:

    • Apache Kafka: A distributed streaming platform that can handle large-scale message routing and processing.
    • Python's kafka-python library: A Python library for interacting with Kafka and implementing message routing.
  4. UCI Service Setup and Deployment: This involves setting up and deploying the UCI service within cQube to provide businesses with a reliable communication framework. Python technologies that can be relevant include:

    • Docker: A platform for containerizing applications, which can help with the deployment of the UCI service.
  5. User Registration System: This system allows users to subscribe to topics with personalized preferences and tracks essential statistics for enhanced insights. For this, you can consider using:

    • Django: A high-level Python web framework that provides a user authentication system and makes it easier to build user registration functionality.
    • PostgreSQL: A popular open-source relational database that integrates well with Django and can store user preferences and statistics.
    • Consider me giving a chance to learn and contribute in this project

Sionedeat commented 2 months ago

Hello, Megha Bhawnani Here. As a programmer, I suggest using Python libraries for different purposes. A few of them are listed below: ### Django: Django provides a full-featured framework with built-in authentication, ORM, and an admin panel. This can be used for areas of web development providing the necessary security. ORM can be used in database management. In addition, the Django REST framework can be used for web APIs as it simplifies authentication and authorization of the API endpoints.

### PyJWT & OAuthLib: For user authentication and authorization, we can use PyJWT for JWT (JSON Web Tokens) authentication or OAuthLib for OAuth authentication. *Note: we use JWT for secure communication authorization and authentication. A good alternative can be OAuth 2.0

### Pandas : If we are required to perform data analysis on message delivery statistics, Pandas can be used for data manipulation and analysis.

### Matplotlib: Matplotlib is useful for visualizing data, including generating charts and graphs to display message delivery statistics in a user-friendly way.

### pytest: For testing the application, we use the pytest testing framework that makes writing and executing tests easy and efficient.

Other than this we require a few more additional steps :

Front End Development: A user-friendly interface is what makes an application differ for a user so using the best available framework is important. Some of them are React, Vue.js, or Angular

Message Delivery Statistics Tracking: Set up a mechanism to track basic statistics related to message deliveries. This may involve logging delivery success/failure, analyzing user engagement metrics, etc. We can use Logging mechanisms, data analysis, and understanding of message delivery systems.

I would love to go on and on about the ideas I have to make this a good application, please do give me a chance to prove my potential and contribute to such an awesome project

@invinayak007 I would be really grateful if you give me a chance .

SanamSahu commented 2 months ago

IHi I'm Sanam Sahu, from KIIT-Bbsr

1. User Registration System

Backend Implementation:

Frontend Implementation:

2. Topic Subscription and Preferences Management

Backend:

Frontend:

3. Message Delivery Statistics

Data Architecture:

Analytics Interface:

4. Testing and Validation

5. Project Setup and Operations

Almas456 commented 2 months ago

Hi, @Himasnhu-AT @invinayak007 I think I have the skill set to work on this issue. Kindly please assign this issue to me.

keithwind commented 1 month ago

Hello @Himasnhu-AT , I have already built a registration website using flask and mongoDb for database .I would like to modify it and contribute to this project. Kindly tell me how can I do so.