# srchecho-cloud/laboratorio_1 architecture

> Architecture diagram of the GitHub repository srchecho-cloud/laboratorio_1, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/srchecho-cloud/laboratorio_1
- Repository: https://github.com/srchecho-cloud/laboratorio_1

## Overview

This repository implements a small video-club rental system. The apparent user workflow is to enter the application, manage customers and films, register rentals and returns, then generate a PDF report. The rental model delegates registration to Videoclub, which validates and updates in-memory state. The sampled code confirms these model interactions and report generation; Main.py was not excerpted, so its connection to Videoclub is shown as unverified. Other model files are included from the source index, but their behavior was not sampled.

Main entry points: [`Modelos/videoclub.py`](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/videoclub.py) (Videoclub service), [`Modelos/alquiler.py`](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/alquiler.py) (Rental model), [`Main.py`](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Main.py) (Application), [`Modelos/cliente.py`](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/cliente.py) (Customer model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_main["Application<br/>[Main.py]"]
end

subgraph group_management["Club management"]
  node_club["Videoclub service<br/>[videoclub.py]"]
  node_customer["Customer model<br/>[cliente.py]"]
  node_film["Film model<br/>[pelicula.py]"]
end

subgraph group_domain["Rental domain"]
  node_rental["Rental model<br/>[alquiler.py]"]
  node_return["Return model<br/>[devolucion.py]"]
  node_operation["Operation base<br/>[operacion.py]"]
end

subgraph group_reporting["Reporting"]
  node_pdf["PDF report"]
end

node_user(("User"))

node_user -.->|"uses"| node_main
node_main -.->|"invokes"| node_club
node_rental -->|"extends"| node_operation
node_rental -->|"registers with"| node_club
node_club -->|"validates"| node_customer
node_club -->|"checks and updates"| node_film
node_club -->|"tracks"| node_rental
node_club -->|"processes"| node_return
node_club -->|"generates"| node_pdf

click node_main "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Main.py"
click node_club "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/videoclub.py"
click node_customer "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/cliente.py"
click node_film "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/pelicula.py"
click node_rental "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/alquiler.py"
click node_return "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/devolucion.py"
click node_operation "https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/operacion.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_user toneBlue
class node_club,node_customer,node_film toneAmber
class node_rental,node_return,node_operation toneMint
class node_pdf toneRose
```

## Components

### Application entry

- [Application](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Main.py): `Main.py`

### Club management

- [Videoclub service](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/videoclub.py): `Modelos/videoclub.py`
- [Customer model](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/cliente.py): `Modelos/cliente.py`
- [Film model](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/pelicula.py): `Modelos/pelicula.py`

### Rental domain

- [Rental model](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/alquiler.py): `Modelos/alquiler.py`
- [Return model](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/devolucion.py): `Modelos/devolucion.py`
- [Operation base](https://github.com/srchecho-cloud/laboratorio_1/blob/main/Modelos/operacion.py): `Modelos/operacion.py`

### Reporting

- **PDF report**

### Other components

- **User**

## Connections

- User → Application: uses
- Application → Videoclub service: invokes
- Rental model → Operation base: extends (evidence: `Modelos/alquiler.py`)
- Rental model → Videoclub service: registers with (evidence: `Modelos/alquiler.py`)
- Videoclub service → Customer model: validates (evidence: `Modelos/videoclub.py`)
- Videoclub service → Film model: checks and updates (evidence: `Modelos/videoclub.py`)
- Videoclub service → Rental model: tracks (evidence: `Modelos/videoclub.py`)
- Videoclub service → Return model: processes (evidence: `Modelos/videoclub.py`)
- Videoclub service → PDF report: generates (evidence: `Modelos/videoclub.py`)
