# atonaltzin/dentalsecurelab architecture

> Architecture diagram of the GitHub repository atonaltzin/dentalsecurelab, 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/atonaltzin/dentalsecurelab
- Repository: https://github.com/atonaltzin/dentalsecurelab

## Overview

DentalSecureLab es una aplicación Django educativa que simula la gestión de un consultorio dental: el usuario accede a sus módulos para consultar o registrar pacientes, citas, expedientes y pagos, además de revisar un dashboard. El README también documenta autenticación y una ruta formativa de seguridad; la infraestructura de pentesting descrita es un entorno de prácticas, no una integración de runtime visible en el árbol. Las vistas muestreadas confirman consultas y guardados para pacientes, citas y expedientes; no se muestrearon pagos, dashboard, usuarios ni los archivos de configuración de rutas.

Main entry points: [`config/urls.py`](https://github.com/atonaltzin/dentalsecurelab/blob/main/config/urls.py) (Rutas Django), [`patients/views.py`](https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/views.py) (Pacientes), [`agenda/views.py`](https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/views.py) (Agenda de citas), [`records/views.py`](https://github.com/atonaltzin/dentalsecurelab/blob/main/records/views.py) (Expedientes clínicos)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Aplicación web"]
  node_routing["Rutas Django<br/>[urls.py]"]
  node_core["Dashboard<br/>[views.py]"]
  node_database[("SQLite")]
  node_settings["Configuración Django<br/>[settings.py]"]
end

subgraph group_clinic["Gestión clínica"]
  node_patients["Pacientes<br/>[views.py]"]
  node_appointments["Agenda de citas<br/>[views.py]"]
  node_records["Expedientes clínicos<br/>[views.py]"]
  node_payments["Pagos<br/>[views.py]"]
  node_patient_forms["Formularios pacientes<br/>[forms.py]"]
  node_appointment_forms["Formularios citas<br/>[forms.py]"]
  node_record_forms["Formularios expedientes<br/>[forms.py]"]
  node_patient_model["Modelo paciente<br/>[models.py]"]
  node_appointment_model["Modelo cita<br/>[models.py]"]
  node_record_model["Modelo expediente<br/>[models.py]"]
  node_payment_model["Modelo pago<br/>[models.py]"]
end

subgraph group_security["Seguridad educativa"]
  node_users["Usuarios y acceso<br/>[views.py]"]
  node_lab["Laboratorio de seguridad"]
end

node_student(("Estudiante / usuario"))

node_student -->|"solicita página"| node_routing
node_routing -->|"despacha"| node_core
node_routing -->|"despacha"| node_users
node_routing -->|"despacha"| node_patients
node_routing -->|"despacha"| node_appointments
node_routing -->|"despacha"| node_records
node_routing -->|"despacha"| node_payments
node_patients -->|"valida datos"| node_patient_forms
node_patients -->|"consulta y guarda"| node_patient_model
node_appointments -->|"valida datos"| node_appointment_forms
node_appointments -->|"consulta y guarda"| node_appointment_model
node_records -->|"valida datos"| node_record_forms
node_records -->|"consulta y guarda"| node_record_model
node_payments -.->|"gestiona registros"| node_payment_model
node_patient_model -->|"lee y escribe"| node_database
node_appointment_model -->|"lee y escribe"| node_database
node_record_model -->|"lee y escribe"| node_database
node_payment_model -.->|"lee y escribe"| node_database
node_settings -->|"configura SQLite"| node_database
node_student -.->|"realiza prácticas"| node_lab

click node_routing "https://github.com/atonaltzin/dentalsecurelab/blob/main/config/urls.py"
click node_core "https://github.com/atonaltzin/dentalsecurelab/blob/main/core/views.py"
click node_users "https://github.com/atonaltzin/dentalsecurelab/blob/main/users/views.py"
click node_patients "https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/views.py"
click node_appointments "https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/views.py"
click node_records "https://github.com/atonaltzin/dentalsecurelab/blob/main/records/views.py"
click node_payments "https://github.com/atonaltzin/dentalsecurelab/blob/main/payments/views.py"
click node_patient_forms "https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/forms.py"
click node_appointment_forms "https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/forms.py"
click node_record_forms "https://github.com/atonaltzin/dentalsecurelab/blob/main/records/forms.py"
click node_patient_model "https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/models.py"
click node_appointment_model "https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/models.py"
click node_record_model "https://github.com/atonaltzin/dentalsecurelab/blob/main/records/models.py"
click node_payment_model "https://github.com/atonaltzin/dentalsecurelab/blob/main/payments/models.py"
click node_settings "https://github.com/atonaltzin/dentalsecurelab/blob/main/config/settings.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_routing,node_core,node_database,node_settings toneBlue
class node_patients,node_appointments,node_records,node_payments,node_patient_forms,node_appointment_forms,node_record_forms,node_patient_model,node_appointment_model,node_record_model,node_payment_model toneAmber
class node_users,node_lab toneMint
class node_student toneIndigo
```

## Components

### Aplicación web

- [Rutas Django](https://github.com/atonaltzin/dentalsecurelab/blob/main/config/urls.py): `config/urls.py`
- [Dashboard](https://github.com/atonaltzin/dentalsecurelab/blob/main/core/views.py): `core/views.py`
- **SQLite**
- [Configuración Django](https://github.com/atonaltzin/dentalsecurelab/blob/main/config/settings.py): `config/settings.py`

### Gestión clínica

- [Pacientes](https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/views.py): `patients/views.py`
- [Agenda de citas](https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/views.py): `agenda/views.py`
- [Expedientes clínicos](https://github.com/atonaltzin/dentalsecurelab/blob/main/records/views.py): `records/views.py`
- [Pagos](https://github.com/atonaltzin/dentalsecurelab/blob/main/payments/views.py): `payments/views.py`
- [Formularios pacientes](https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/forms.py): `patients/forms.py`
- [Formularios citas](https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/forms.py): `agenda/forms.py`
- [Formularios expedientes](https://github.com/atonaltzin/dentalsecurelab/blob/main/records/forms.py): `records/forms.py`
- [Modelo paciente](https://github.com/atonaltzin/dentalsecurelab/blob/main/patients/models.py): `patients/models.py`
- [Modelo cita](https://github.com/atonaltzin/dentalsecurelab/blob/main/agenda/models.py): `agenda/models.py`
- [Modelo expediente](https://github.com/atonaltzin/dentalsecurelab/blob/main/records/models.py): `records/models.py`
- [Modelo pago](https://github.com/atonaltzin/dentalsecurelab/blob/main/payments/models.py): `payments/models.py`

### Seguridad educativa

- [Usuarios y acceso](https://github.com/atonaltzin/dentalsecurelab/blob/main/users/views.py): `users/views.py`
- **Laboratorio de seguridad**

### Other components

- **Estudiante / usuario**

## Connections

- Estudiante / usuario → Rutas Django: solicita página
- Rutas Django → Dashboard: despacha
- Rutas Django → Usuarios y acceso: despacha
- Rutas Django → Pacientes: despacha
- Rutas Django → Agenda de citas: despacha
- Rutas Django → Expedientes clínicos: despacha
- Rutas Django → Pagos: despacha
- Pacientes → Formularios pacientes: valida datos
- Pacientes → Modelo paciente: consulta y guarda
- Agenda de citas → Formularios citas: valida datos
- Agenda de citas → Modelo cita: consulta y guarda
- Expedientes clínicos → Formularios expedientes: valida datos
- Expedientes clínicos → Modelo expediente: consulta y guarda
- Pagos → Modelo pago: gestiona registros
- Modelo paciente → SQLite: lee y escribe
- Modelo cita → SQLite: lee y escribe
- Modelo expediente → SQLite: lee y escribe
- Modelo pago → SQLite: lee y escribe
- Configuración Django → SQLite: configura SQLite
- Estudiante / usuario → Laboratorio de seguridad: realiza prácticas
