> ## Documentation Index
> Fetch the complete documentation index at: https://reduardo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Arquitectura del Sistema

> Estructura de archivos y patrón MVC implementado

# Arquitectura del Sistema

El sistema utiliza el patrón **Modelo-Vista-Controlador (MVC)** con un **Front Controller** que centraliza todas las peticiones HTTP.

## Diagrama de Flujo

```mermaid theme={null}
flowchart TD
    A[Cliente / Navegador] -->|HTTP Request| B[index.php - Front Controller]
    B -->|Parsea ruta| C{¿Ruta API?}
    C -->|Sí| D[ApiController]
    C -->|No| E{¿Ruta web?}
    E -->|Auth| F[AuthController]
    E -->|Productos| G[ProductoController]
    E -->|Catálogo| H[PublicController]
    D --> I[ProductoModel]
    F --> J[UsuarioModel]
    G --> I
    G --> K[LogModel]
    H --> I
    I --> L[(MySQL)]
    J --> L
    K --> L
    G --> M[Vistas PHP + Bootstrap]
    H --> M
    F --> M
    D -->|JSON| A
    M -->|HTML| A
```

## Estructura de Archivos

```
tienda_mvc/
├── config/
│   ├── Autoload.php        # Carga automática de clases
│   ├── Csrf.php             # Protección contra CSRF
│   └── Database.php         # Conexión PDO a MySQL
├── controllers/
│   ├── ApiController.php    # API REST (JSON)
│   ├── AuthController.php   # Login / Logout
│   ├── ProductoController.php # CRUD de productos
│   └── PublicController.php # Catálogo público
├── models/
│   ├── LogModel.php         # Bitácora de acciones
│   ├── ProductoModel.php    # Operaciones sobre productos
│   └── UsuarioModel.php     # Búsqueda de usuarios
├── views/
│   ├── admin/
│   │   └── logs.php         # Vista de la bitácora
│   ├── auth/
│   │   └── login.php        # Formulario de login
│   ├── layouts/
│   │   ├── header.php       # Cabecera y navbar
│   │   └── footer.php       # Pie de página
│   ├── productos/
│   │   ├── create.php       # Formulario de creación
│   │   ├── edit.php         # Formulario de edición
│   │   └── index.php        # Listado de productos
│   └── public/
│       └── catalogo.php     # Catálogo público
├── uploads/                 # Imágenes de productos
├── .htaccess                # Rutas amigables (Apache)
├── database.sql             # Script SQL completo
├── index.php                # Front Controller
└── router.php               # Router para PHP built-in server
```

## Componentes Clave

### Front Controller (`index.php`)

Todas las peticiones pasan por `index.php`, que:

1. Carga el autoloader
2. Parsea la URL para determinar la ruta
3. Si empieza con `api/`, despacha al `ApiController`
4. Si no, despacha al controlador MVC correspondiente

### Autoloader (`config/Autoload.php`)

Implementa `spl_autoload_register()` para cargar clases automáticamente basándose en los namespaces. Convierte `Controllers\ProductoController` a `controllers/ProductoController.php`.

### Base de Datos (`config/Database.php`)

Clase que encapsula la conexión PDO con:

* Charset UTF-8
* Modo de errores como excepciones
* Fetch mode asociativo por defecto


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.