# GEMINI.md

## Descripción General del Proyecto

Este proyecto es un sistema de gestión de contenidos (CMS) para señalización digital, construido con Laravel y Filament. Permite a los usuarios administrar campañas, medios, pantallas y sus arreglos para mostrar contenido en diversas pantallas.

El propósito principal de la aplicación es entregar contenido dirigido a diferentes conjuntos de pantallas (`Conjuntos`) basado en campañas activas (`Campanas`). El contenido en sí está compuesto por archivos multimedia (`Medios`) y plantillas HTML (`Plantillas`).

Las tecnologías principales utilizadas son:

*   **PHP 8.2**
*   **Laravel 12**
*   **Filament 3.3** (para el panel de administración)
*   **MySQL/MariaDB** (asumido, como es estándar con Laravel)
*   **Vite** (para el empaquetado de assets de frontend)

La arquitectura de la aplicación sigue el patrón estándar MVC de Laravel, con la adición de recursos de Filament para la interfaz de administración.

## Compilación y Ejecución

Para ejecutar el proyecto en un entorno de desarrollo local, sigue estos pasos:

1.  **Instalar Dependencias:**
    ```bash
    composer install
    npm install
    ```

2.  **Configurar el Entorno:**
    *   Copia el archivo `.env.example` a `.env`:
        ```bash
        cp .env.example .env
        ```
    *   Genera una clave de aplicación:
        ```bash
        php artisan key:generate
        ```
    *   Configura tus credenciales de base de datos en el archivo `.env`.

3.  **Ejecutar Migraciones:**
    ```bash
    php artisan migrate
    ```

4.  **Iniciar los Servidores de Desarrollo:**
    El proyecto incluye un script concurrente para iniciar todos los servicios necesarios:
    ```bash
    npm run dev
    ```
    Esto iniciará el servidor de desarrollo de PHP, el trabajador de colas, el observador de logs y el servidor de desarrollo de Vite.

5.  **Acceder a la Aplicación:**
    *   **Frontend:** [http://localhost:8000](http://localhost:8000)
    *   **Panel de Administración:** [http://localhost:8000/admin](http://localhost:8000/admin)

### Pruebas

Para ejecutar la suite de pruebas, usa el siguiente comando:

```bash
php artisan test
```

## Convenciones de Desarrollo

*   **Filament:** El panel de administración está construido con Filament. Toda la funcionalidad orientada a la administración debe implementarse como recursos, páginas y widgets de Filament.
*   **API:** Se utiliza una API RESTful para entregar contenido a las pantallas. La API se define en `routes/api.php` y se implementa en `app/Http/Controllers/ApiController.php`.
*   **Base de Datos:** Los cambios en el esquema de la base de datos se gestionan a través de las migraciones de Laravel.
*   **Estilo de Código:** El proyecto utiliza Laravel Pint para el estilo del código. Para formatear tu código, ejecuta:
    ```bash
    ./vendor/bin/pint
    ```