# obsonferreira/py-agenda-api architecture

> Architecture diagram of the GitHub repository obsonferreira/py-agenda-api, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/obsonferreira/py-agenda-api
- Repository: https://github.com/obsonferreira/py-agenda-api

## Overview

This repository is a small Python contact-validation library, not a web API: its visible workflow accepts personal or contact data, runs field-specific checks, and constructs validation results. Personal-name and telephone schema objects delegate to controllers; those controllers analyze text and return a result contract. Email validation analyzes email structure but currently prints checks rather than returning a result. The agenda schema and generic field validator are incomplete, so their intended runtime wiring cannot be established from the sampled source.

Main entry points: [`model/contato_schema.py`](https://github.com/obsonferreira/py-agenda-api/blob/main/model/contato_schema.py) (Contact data), [`controllers/analiseTexto.py`](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/analiseTexto.py) (Text analysis), [`model/dados_pessoa_schema.py`](https://github.com/obsonferreira/py-agenda-api/blob/main/model/dados_pessoa_schema.py) (Personal data), [`controllers/valida_nome.py`](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_nome.py) (Name validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_models["Data schemas"]
  node_personal["Personal data"]
  node_contacts["Contact data<br/>[contato_schema.py]"]
  node_agenda["Agenda person<br/>[agenda_schema.py]"]
end

subgraph group_controllers["Validation controllers"]
  node_name_validation["Name validation<br/>[valida_nome.py]"]
  node_phone_validation["Phone validation<br/>[valida_telefone.py]"]
  node_email_validation["Email validation<br/>[valida_email.py]"]
  node_text_analysis["Text analysis<br/>[analiseTexto.py]"]
  node_field_check["Field check<br/>[valida_campo.py]"]
end

node_caller(("Library caller"))

node_caller -->|"provides names"| node_personal
node_caller -->|"provides contacts"| node_contacts
node_personal -->|"validates names"| node_name_validation
node_contacts -->|"validates phone"| node_phone_validation
node_contacts -->|"validates email"| node_email_validation
node_name_validation -->|"analyzes text"| node_text_analysis
node_phone_validation -->|"analyzes text"| node_text_analysis
node_email_validation -->|"analyzes email"| node_text_analysis

click node_personal "https://github.com/obsonferreira/py-agenda-api/blob/main/model/dados_pessoa_schema.py"
click node_contacts "https://github.com/obsonferreira/py-agenda-api/blob/main/model/contato_schema.py"
click node_agenda "https://github.com/obsonferreira/py-agenda-api/blob/main/model/agenda_schema.py"
click node_name_validation "https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_nome.py"
click node_phone_validation "https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_telefone.py"
click node_email_validation "https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_email.py"
click node_text_analysis "https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/analiseTexto.py"
click node_field_check "https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_campo.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_personal,node_contacts,node_agenda toneBlue
class node_name_validation,node_phone_validation,node_email_validation,node_text_analysis,node_field_check toneAmber
class node_caller toneIndigo
```

## Components

### Data schemas

- [Personal data](https://github.com/obsonferreira/py-agenda-api/blob/main/model/dados_pessoa_schema.py): `model/dados_pessoa_schema.py`
- [Contact data](https://github.com/obsonferreira/py-agenda-api/blob/main/model/contato_schema.py): `model/contato_schema.py`
- [Agenda person](https://github.com/obsonferreira/py-agenda-api/blob/main/model/agenda_schema.py): `model/agenda_schema.py`

### Validation controllers

- [Name validation](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_nome.py): `controllers/valida_nome.py`
- [Phone validation](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_telefone.py): `controllers/valida_telefone.py`
- [Email validation](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_email.py): `controllers/valida_email.py`
- [Text analysis](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/analiseTexto.py): `controllers/analiseTexto.py`
- [Field check](https://github.com/obsonferreira/py-agenda-api/blob/main/controllers/valida_campo.py): `controllers/valida_campo.py`

### Other components

- **Library caller**

## Connections

- Library caller → Personal data: provides names
- Library caller → Contact data: provides contacts
- Personal data → Name validation: validates names
- Contact data → Phone validation: validates phone
- Contact data → Email validation: validates email
- Name validation → Text analysis: analyzes text
- Phone validation → Text analysis: analyzes text
- Email validation → Text analysis: analyzes email
