Skip to content

Architecture

In ADDA, we follow the MVC (Model-View-Controller) architectural design pattern, enhancing modularity for easier development, testing, and maintenance.

MVC Architecture

Components

Model

  • Data Management: Manages the application's data, including retrieval and storage.
  • Business Logic: Encapsulates the rules and logic of the application.
  • Notification: Notifies the View when data changes.

View

  • User Interface: Displays data to the user.
  • Data Binding: Updates the UI when the Model changes.
  • User Input: Captures user input for the Controller.

Controller

  • Handling Requests: Receives user inputs from the View.
  • Updating the Model: Modifies or retrieves data from the Model.
  • Selecting the View: Determines which View to render.

Flow of Control

  1. User Interaction: The user interacts with the View.
  2. Request Handling: The View sends input to the Controller.
  3. Processing Logic: The Controller processes the input and interacts with the Model.
  4. Data Manipulation: The Model updates its state and notifies the View.
  5. View Update: The Controller updates the View with new data.
  6. Display: The View renders the updated data.

Example in Web Development

In a typical web application: - Model: Defines data structures (e.g., a Post class) and methods for interacting with the database. - View: Uses HTML templates to present data and forms for user interaction. - Controller: Handles web requests, processes user inputs, updates the Model, and determines which View to display.

Tools and Technologies Used in ADDA

Programming Languages

  • Python: Used for backend development, especially in computer vision tasks and hardware integration.
  • JavaScript: Enhances interactivity in web applications, allowing dynamic user experiences.

Database

  • MySQL: Manages structured data efficiently with complex queries and relationships.

Frameworks

  • Flask: A lightweight web framework that simplifies web application development.
  • React: For building reusable components and dynamic user interfaces.
  • FastAPI: Used for high-performance API development with clear data models.

Other Technologies

  • RabbitMQ: A message broker for asynchronous communication.
  • Triton: Manages models and utilizes GPUs for machine learning tasks.
  • Gunicorn: Serves Python web applications efficiently.
  • Nginx: Acts as a reverse proxy for load balancing.
  • Icinga: Monitors the performance and availability of infrastructure.
  • Certbot: Automates SSL/TLS certificate management.
  • HTML, CSS, jQuery: Essential for frontend development, structuring, styling, and interactivity.

Hardware

  • CPU, GPUs, Network Switches: Essential components for performance, with GPUs accelerating computations for AI applications.