# kr1ssyf3r/proyectoestructuras03 architecture

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

## Overview

Social UNA is a Flask university social platform. Users register or sign in, then access protected profile, feed, and friendship features; account recovery sends a time-limited link by email and permits a password reset. Its friendship domain covers discovery, requests, friendships, recommendations, and blocking. JSON repositories persist users, recovery tokens, and friendship data. The README documents major capabilities, while some friendship and recovery implementation details were not fully sampled; edges are limited to relationships shown in excerpts, the source index, or README.

Main entry points: [`controllers/autenticacion_routes.py`](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/autenticacion_routes.py) (Auth routes), [`services/amistadService.py`](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/amistadService.py) (Friend service), [`services/usuario_service.py`](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/usuario_service.py) (User service), [`application/__init__.py`](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/application/__init__.py) (Flask app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_flask["Flask app<br/>[__init__.py]"]
  node_auth_routes["Auth routes"]
  node_session_guard["Session guard<br/>[decorators.py]"]
  node_profile_routes["Profile routes<br/>[perfil_routes.py]"]
  node_feed_routes["Feed routes<br/>[inicio_routes.py]"]
  node_friend_routes["Friend routes"]
  node_templates["Page templates"]
end

subgraph group_accounts["Accounts and profiles"]
  node_user_service["User service<br/>[usuario_service.py]"]
  node_user_model["User model<br/>[usuario.py]"]
end

subgraph group_friendships["Social connections"]
  node_friend_service["Friend service<br/>[amistadService.py]"]
  node_friend_graph["Friend graph<br/>[grafoAmistades.py]"]
  node_request_manager["Request manager"]
  node_block_manager["Block manager<br/>[gestorBloqueos.py]"]
  node_friend_request["Friend request"]
end

subgraph group_persistence["Persistence"]
  node_user_repo["User repository"]
  node_user_json[("User JSON")]
  node_friend_repo["Friend repository"]
  node_token_repo["Token repository"]
  node_token_json[("Token JSON")]
end

subgraph group_recovery["Recovery and email"]
  node_token_model["Recovery token"]
  node_recovery_service["Recovery service"]
  node_mail_service["Mail service<br/>[correo_service.py]"]
end

node_student(("Student"))
node_gmail["Gmail SMTP"]

node_student -->|"submits credentials"| node_auth_routes
node_auth_routes -->|"authenticates"| node_user_service
node_auth_routes -->|"renders pages"| node_templates
node_flask -->|"registers routes"| node_auth_routes
node_flask -->|"registers routes"| node_profile_routes
node_flask -->|"registers routes"| node_feed_routes
node_flask -->|"registers routes"| node_friend_routes
node_session_guard -->|"loads user"| node_user_service
node_profile_routes -->|"protects pages"| node_session_guard
node_profile_routes -->|"updates profile"| node_user_service
node_profile_routes -->|"renders pages"| node_templates
node_feed_routes -->|"protects feed"| node_session_guard
node_feed_routes -->|"gets recommendations"| node_friend_service
node_friend_routes -->|"protects routes"| node_session_guard
node_friend_routes -->|"manages connections"| node_friend_service
node_user_service -->|"reads and writes"| node_user_repo
node_user_service -->|"creates users"| node_user_model
node_user_repo -->|"loads records"| node_user_model
node_user_repo -->|"persists users"| node_user_json
node_friend_service -->|"loads and saves"| node_friend_repo
node_friend_service -->|"updates relationships"| node_friend_graph
node_friend_service -->|"manages requests"| node_request_manager
node_friend_service -->|"manages blocks"| node_block_manager
node_friend_service -->|"uses request model"| node_friend_request
node_auth_routes -->|"looks up email"| node_user_repo
node_auth_routes -->|"requests reset"| node_recovery_service
node_recovery_service -->|"stores tokens"| node_token_repo
node_recovery_service -->|"creates tokens"| node_token_model
node_token_repo -->|"loads records"| node_token_model
node_token_repo -->|"persists tokens"| node_token_json
node_auth_routes -->|"sends messages"| node_mail_service
node_mail_service -->|"sends via SMTP"| node_gmail

click node_flask "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/application/__init__.py"
click node_auth_routes "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/autenticacion_routes.py"
click node_session_guard "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/decorators.py"
click node_profile_routes "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/perfil_routes.py"
click node_feed_routes "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/inicio_routes.py"
click node_friend_routes "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/amistades_routes.py"
click node_templates "https://github.com/kr1ssyf3r/proyectoestructuras03/tree/main/templates"
click node_user_service "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/usuario_service.py"
click node_user_model "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/usuario.py"
click node_user_repo "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/repositories/usuario_repository.py"
click node_user_json "https://github.com/kr1ssyf3r/proyectoestructuras03/tree/main/data"
click node_friend_service "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/amistadService.py"
click node_friend_graph "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/grafoAmistades.py"
click node_request_manager "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/gestorSolicitudes.py"
click node_block_manager "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/gestorBloqueos.py"
click node_friend_request "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/solicitudAmistad.py"
click node_friend_repo "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/repositories/amistadRepository.py"
click node_token_model "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/token_recuperacion.py"
click node_token_repo "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/repositories/token_repository.py"
click node_token_json "https://github.com/kr1ssyf3r/proyectoestructuras03/tree/main/data"
click node_recovery_service "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/recuperacion_service.py"
click node_mail_service "https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/correo_service.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_flask,node_auth_routes,node_session_guard,node_profile_routes,node_feed_routes,node_friend_routes,node_templates toneBlue
class node_user_service,node_user_model toneAmber
class node_friend_service,node_friend_graph,node_request_manager,node_block_manager,node_friend_request toneMint
class node_user_repo,node_user_json,node_friend_repo,node_token_repo,node_token_json toneRose
class node_token_model,node_recovery_service,node_mail_service,node_student,node_gmail toneIndigo
```

## Components

### Web interface

- [Flask app](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/application/__init__.py): `application/__init__.py`
- [Auth routes](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/autenticacion_routes.py): `controllers/autenticacion_routes.py`
- [Session guard](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/decorators.py): `controllers/decorators.py`
- [Profile routes](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/perfil_routes.py): `controllers/perfil_routes.py`
- [Feed routes](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/inicio_routes.py): `controllers/inicio_routes.py`
- [Friend routes](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/controllers/amistades_routes.py): `controllers/amistades_routes.py`
- [Page templates](https://github.com/kr1ssyf3r/proyectoestructuras03/tree/main/templates): `templates`

### Accounts and profiles

- [User service](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/usuario_service.py): `services/usuario_service.py`
- [User model](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/usuario.py): `models/usuario.py`

### Social connections

- [Friend service](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/amistadService.py): `services/amistadService.py`
- [Friend graph](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/grafoAmistades.py): `models/grafoAmistades.py`
- [Request manager](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/gestorSolicitudes.py): `models/gestorSolicitudes.py`
- [Block manager](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/gestorBloqueos.py): `models/gestorBloqueos.py`
- [Friend request](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/solicitudAmistad.py): `models/solicitudAmistad.py`

### Persistence

- [User repository](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/repositories/usuario_repository.py): `repositories/usuario_repository.py`
- [User JSON](https://github.com/kr1ssyf3r/proyectoestructuras03/tree/main/data): `data`
- [Friend repository](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/repositories/amistadRepository.py): `repositories/amistadRepository.py`
- [Token repository](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/repositories/token_repository.py): `repositories/token_repository.py`
- [Token JSON](https://github.com/kr1ssyf3r/proyectoestructuras03/tree/main/data): `data`

### Recovery and email

- [Recovery token](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/models/token_recuperacion.py): `models/token_recuperacion.py`
- [Recovery service](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/recuperacion_service.py): `services/recuperacion_service.py`
- [Mail service](https://github.com/kr1ssyf3r/proyectoestructuras03/blob/main/services/correo_service.py): `services/correo_service.py`

### Other components

- **Student**
- **Gmail SMTP**

## Connections

- Student → Auth routes: submits credentials (evidence: `controllers/autenticacion_routes.py`)
- Auth routes → User service: authenticates (evidence: `controllers/autenticacion_routes.py`)
- Auth routes → Page templates: renders pages (evidence: `controllers/autenticacion_routes.py`)
- Flask app → Auth routes: registers routes (evidence: `application/__init__.py`)
- Flask app → Profile routes: registers routes (evidence: `application/__init__.py`)
- Flask app → Feed routes: registers routes (evidence: `application/__init__.py`)
- Flask app → Friend routes: registers routes (evidence: `application/__init__.py`)
- Session guard → User service: loads user (evidence: `controllers/decorators.py`)
- Profile routes → Session guard: protects pages (evidence: `controllers/perfil_routes.py`)
- Profile routes → User service: updates profile (evidence: `controllers/perfil_routes.py`)
- Profile routes → Page templates: renders pages (evidence: `controllers/perfil_routes.py`)
- Feed routes → Session guard: protects feed (evidence: `controllers/inicio_routes.py`)
- Feed routes → Friend service: gets recommendations (evidence: `controllers/inicio_routes.py`)
- Friend routes → Session guard: protects routes (evidence: `controllers/amistades_routes.py`)
- Friend routes → Friend service: manages connections (evidence: `controllers/amistades_routes.py`)
- User service → User repository: reads and writes (evidence: `services/usuario_service.py`)
- User service → User model: creates users (evidence: `services/usuario_service.py`)
- User repository → User model: loads records (evidence: `repositories/usuario_repository.py`)
- User repository → User JSON: persists users (evidence: `readme.md`)
- Friend service → Friend repository: loads and saves (evidence: `services/amistadService.py`)
- Friend service → Friend graph: updates relationships (evidence: `services/amistadService.py`)
- Friend service → Request manager: manages requests (evidence: `services/amistadService.py`)
- Friend service → Block manager: manages blocks (evidence: `services/amistadService.py`)
- Friend service → Friend request: uses request model (evidence: `services/amistadService.py`)
- Auth routes → User repository: looks up email (evidence: `controllers/autenticacion_routes.py`)
- Auth routes → Recovery service: requests reset (evidence: `controllers/autenticacion_routes.py`)
- Recovery service → Token repository: stores tokens (evidence: `services/recuperacion_service.py`)
- Recovery service → Recovery token: creates tokens (evidence: `services/recuperacion_service.py`)
- Token repository → Recovery token: loads records (evidence: `repositories/token_repository.py`)
- Token repository → Token JSON: persists tokens (evidence: `readme.md`)
- Auth routes → Mail service: sends messages (evidence: `controllers/autenticacion_routes.py`)
- Mail service → Gmail SMTP: sends via SMTP (evidence: `readme.md`)
