Skip to content

Karthick47v2/quizzzy_plus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quizzy Plus

Introduction

Quizy Plus is an educational web application designed to assist students in preparing for exams through interactive quizzes and a 24/7 chat assistant. Instead of merely studying from notes or PDFs, students can convert their study material into engaging quizzes. The application offers:

  • Document-based question and answer generation.
  • A chat assistant that serves as a study buddy.
  • Detailed analytics and personalized recommendations based on quiz performance.

Design Decisions

  • Microservices Architecture: The application is divided into several microservices to ensure scalability and maintainability.
  • Containerization: All services are containerized using Docker, which simplifies deployment and orchestration.
  • Kubernetes: Used for service discovery, registration, and load balancing.

Microservices

Implementation Methods

We used Kubernetes for microservices orchestration, ensuring each service is independently scalable and manageable. Kubernetes handles the deployment, scaling, and operation of application containers across clusters of hosts.

Core Services

Chat Service

Functionality: Allows students to upload PDF documents and interact with the chat assistant to clarify doubts. Endpoints:

Method URL Description Input Parameters Input Parameters Formats
POST /chat/upload Upload document to chat file File
POST /chat/query Chat with assistant message string
DELETE /chat/clear-chat Clear chat history - -
DELETE /chat/clear-doc Clear uploaded documents - -

Inter-service Interactions: Communicates with the vector storage and GPT-3.5 model for query processing.

Quiz Service

Functionality: Generates multiple-choice and true/false questions from uploaded PDFs.

Endpoints:

Method URL Description Input Parameters Input Parameters Formats
POST /quiz/gen-qa Upload a document to generate Q&A file File
GET /quiz/get-qa Retrieve the generated Q&A - -
DELETE /quiz/delete-quiz Delete a specified quiz quiz_id string
POST /quiz/store-results Store specified quiz results results Array of objects with each object containing 'question' and 'score'

Inter-service Interactions: Interacts with the analytics service to store quiz results.

Analytics Service

Functionality: Provides insights into quiz performance and personalized recommendations.

Endpoints:

Method URL Description Input Parameters Input Parameters Formats
GET /analytics/analyze Get insights from results - -
POST /analytics/analyze-by-quiz Get insights from a specific quiz quiz_id string
GET /analytics/get-score Get all results - -
POST /analytics/get-score-by-quiz Get results for a specific quiz quiz_id string

Inter-service Interactions: Consumes data from the quiz service to generate analytics.

Utility Services

Discovery Server

  • Handles the registration and monitoring of services using Kubernetes.

API Gateway

  • Implemented with Flask, uses Kubernetes ingress support to route requests to the relevant services.

Authentication Service

  • Uses Firebase authentication for user management and authorization.

User Interface

Implementation Details

  • Front-end: Built using React, Vite, and Tailwind CSS for a responsive and dynamic user interface.
  • Back-end: Developed using Python and Flask, containerized with Docker, and orchestrated with Kubernetes.

API Testing Tools

  • Postman was used extensively to test all API endpoints and ensure their functionality and reliability.

Deployment

Local Deployment

  1. Clone the repository.
  2. Install Docker and Kubernetes on your local machine.
  3. Use Docker Compose to start all services.
  4. Access the application via localhost.

Cloud Deployment

  1. Choose a cloud provider (e.g., AWS, GCP, Azure).
  2. Set up a Kubernetes cluster.
  3. Deploy the Docker containers to the cluster.
  4. Configure the Kubernetes ingress to expose the API gateway.

Source Code

Development Challenges

  1. Inconsistent answers from open-source models: Ensuring reliable responses required thorough testing and fine-tuning.
  2. Learning new technologies: Adopting new frameworks and tools such as Kubernetes posed a learning curve.

References

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •