Skip to content
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

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

Open
invinayak007 opened this issue Jan 5, 2024 · 18 comments · May be fixed by #6
Open

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

invinayak007 opened this issue Jan 5, 2024 · 18 comments · May be fixed by #6
Assignees

Comments

@invinayak007
Copy link
Collaborator

invinayak007 commented Jan 5, 2024

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

  • User Registration with Topic Subscription
    Develop a user-friendly registration system enabling users to subscribe to diverse topics based on their preferences.
  • Preferences Management:
    Implement a mechanism for users to manage and modify their topic preferences, providing flexibility and customization.
  • Message Delivery Statistics:
    Establish a system to track and analyze basic statistics related to message deliveries, offering insights into user engagement.

Implementation Steps

  • User Registration System:
    Design and implement a robust user registration system, ensuring a seamless experience for users to sign up and manage their profiles.
  • Topic Subscription and Preferences:
    Integrate a feature for users to subscribe to various topics and set preferences, allowing them to tailor their cQube experience.
  • Statistics Tracking:
    Develop a mechanism to track basic statistics related to message deliveries, including delivery success rates and user engagement metrics.

Learning Path

  • Complexity: Moderate
  • Risk/Exploratory: Low to Moderate
  • Skills Required: Web development, user authentication, and basic understanding of message delivery systems.

Project Set Up

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

  • Install the necessary web development tools and frameworks, such as Django or Flask.
  • Set up a user authentication system for secure registration and login.
  • Integrate a database for storing user profiles, topic subscriptions, and preferences.
  • Implement a basic front-end interface for users to interact with the registration and preference management system.

Acceptance Criteria

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

  • Functional User Registration System.
  • User-friendly Topic Subscription and Preferences Management.
  • Successful implementation of basic message delivery statistics tracking.

Out of Scope Elements

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

  • Advanced analytics and in-depth statistical analysis.
  • Integration with external communication platforms.

Key Milestones

  • User Registration System Implementation
  • Topic Subscription and Preferences Management
  • Statistics Tracking Mechanism
  • Testing and Validation

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

Copy link

c4gt-community-support bot commented Jan 5, 2024

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

  • Domain - Area of governance
  • Sub-Category - Please mention the sub-category if any for the ticket

Please update the ticket

@Himasnhu-AT
Copy link

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
Copy link
Member

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
Copy link
Collaborator Author

Hi Himanshu,

Can you DM me @invinayak on Discord.

Thanks,
Vinayak

@Himasnhu-AT
Copy link

Okay 👍

@Himasnhu-AT
Copy link

Libraries used:

user Flowchart:

Issue #4 uci-integration excalidraw

@jayClean
Copy link

Hi I'm Interested in working on this issue.

@rising0raj
Copy link

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
Copy link

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
Copy link

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
Copy link

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
Copy link

### 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
Copy link

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
Copy link

IHi I'm Sanam Sahu, from KIIT-Bbsr

1. User Registration System

Backend Implementation:

  • Framework: Use Django or Flask. Django is especially suitable for larger applications due to its "batteries-included" approach, while Flask offers more flexibility and is lightweight.
  • Database: Consider using PostgreSQL for relational data storage due to its robustness, performance, and compatibility with Django and Flask.
  • Authentication: Implement authentication using Django’s built-in authentication system or Flask-Login for Flask. Enhance security with additional packages like Flask-Security or django-allauth, which support multi-factor authentication and social authentication.

Frontend Implementation:

  • Single Page Application (SPA): Build the SPA using React or Vue.js. Integrate with Django or Flask using RESTful APIs or GraphQL (using Graphene-Django).
  • Form Handling: Implement robust form handling and client-side validation using libraries such as Formik or React Hook Form.

2. Topic Subscription and Preferences Management

Backend:

  • APIs: Use Django REST framework or Flask-RESTful for REST API development. If opting for GraphQL, Graphene-Django provides comprehensive support for GraphQL with Django.
  • Data Handling: Ensure dynamic handling of user subscriptions and preferences with Django’s ORM or SQLAlchemy in Flask, using appropriate relational database schemas.

Frontend:

  • Interactive UI: Employ modern JavaScript frameworks like React or Vue.js to create interactive and dynamic user interfaces for managing preferences and subscriptions.

3. Message Delivery Statistics

Data Architecture:

  • Asynchronous Processing: Utilize Celery with Redis or RabbitMQ as the broker for handling asynchronous tasks such as logging message delivery statuses.
  • Analytics: Use Pandas and NumPy for data analysis, or integrate with Apache Spark for handling big data processing if the scale justifies it.

Analytics Interface:

  • Visualization: Implement dashboards using Plotly Dash, a powerful Python library for building interactive web-based dashboards.

4. Testing and Validation

  • Automated Testing: Use pytest for backend testing. It's robust and integrates well with Django and Flask.
  • Integration Testing: Utilize tools like Postman for API testing and Selenium or Pytest for end-to-end testing in Python.

5. Project Setup and Operations

  • Containerization: Dockerize the application to ensure consistency across development, testing, and production environments.
  • Orchestration: Manage the deployment using Kubernetes if scalability and high availability are required.
  • DevOps Practices: Implement CI/CD pipelines using Jenkins, GitHub Actions, or GitLab CI with Python environments.
    @invinayak007 I would be really grateful if you give me a chance .

@Almas456
Copy link

Almas456 commented May 3, 2024

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

@keithwind
Copy link

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.

@Blacksujit
Copy link

Hello @Himasnhu-AT ,

can i work on this issue

@VedantKhairnar
Copy link

Hello @Blacksujit
Pls directly raise the PR. Do let us know if you need any assistance.
Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.