# Salto Innova – README

## 1. Introducción

Salto Innova es una aplicación web diseñada para gestionar de forma integral el proceso de atención, asesoramiento y
seguimiento de unidades de atención (empresas, emprendimientos o ideas).

Desde el punto de vista funcional, el sistema permite:

- Gestionar usuarios internos (funcionarios) con distintos roles y niveles de permisos.
- Registrar y administrar unidades de atención y sus contactos asociados.
- Gestionar agenda y citas de atención.
- Registrar sesiones y su historial.
- Ejecutar autodiagnósticos y analizar resultados.
- Crear y hacer seguimiento de planes de acción.
- Administrar programas y postulaciones.
- Generar consultas y reportes para apoyo a la toma de decisiones.
- Autenticación con control de acceso por rol y segundo factor vía email.

El sistema centraliza la información y permite mantener el historial completo de cada caso, asegurando trazabilidad y
continuidad en el acompañamiento.

---

## 2. Ambiente de Desarrollo

A continuación se detallan los pasos necesarios para levantar el entorno de desarrollo del proyecto.

Este entorno permite:

- Agregar nuevas funcionalidades.
- Modificar reglas de negocio.
- Realizar pruebas antes de pasar a producción.

Todos los pasos pueden realizarse desde cualquier computadora con acceso a Internet.

---

### 2.1 Requisitos Previos

Es necesario tener instalado:

- Docker
- Docker Compose
- Git
- Repositorio clonado

---

### 2.2 Configuración Inicial

#### Paso 1 – Clonar el repositorio

```bash
git clone https://github.com/ucudal/retoSaltoFebrero2026
cd retoSaltoFebrero2026
```

#### Paso 2 – Crear archivo de configuración

En la raíz del proyecto crear el archivo `.env` basado en `.env.example`:

```
cp .env.example .env
```

Luego editar el archivo `.env` y completar los valores necesarios.

> ⚠️ El archivo .env contiene variables sensibles (contraseñas, claves y configuraciones). No se versiona en el
> repositorio.

### 2.3 Variables de Entorno (.env)

A continuación se detallan las principales variables que deben configurarse:

| Variable      | Descripción                  | Ejemplo                              |
| ------------- | ---------------------------- | ------------------------------------ |
| APP_NAME      | Nombre de la aplicación      | SaltoInnova                          |
| APP_ENV       | Entorno (local / production) | local                                |
| APP_KEY       | Clave interna de Laravel     | (generada automáticamente)           |
| APP_DEBUG     | Modo debug                   | true                                 |
| APP_URL       | URL base de la aplicación    | [http://localhost](http://localhost) |
| DB_CONNECTION | Motor de base de datos       | mysql                                |
| DB_HOST       | Host de base de datos        | db                                   |
| DB_PORT       | Puerto de base de datos      | 3306                                 |
| DB_DATABASE   | Nombre de la base de datos   | salto_innova                         |
| DB_USERNAME   | Usuario de base de datos     | root                                 |
| DB_PASSWORD   | Contraseña de base de datos  | password                             |
| MAIL_MAILER   | Driver de envío de correo    | smtp                                 |
| MAIL_HOST     | Servidor SMTP                | smtp.mailtrap.io                     |
| MAIL_PORT     | Puerto SMTP                  | 2525                                 |
| MAIL_USERNAME | Usuario SMTP                 | (configurar)                         |
| MAIL_PASSWORD | Contraseña SMTP              | (configurar)                         |

### 2.4 Levantar el Entorno de Desarrollo

Ejecutar el siguiente comando:

```
docker compose -f docker-compose.dev.yaml up --build -d
```

Este comando:

- Construye la imagen de desarrollo.

- Crea los contenedores necesarios (aplicación + base de datos).

- Inicia el entorno en segundo plano.

### 2.5 Generar APP_KEY (Primera vez)

Si es la primera vez que se levanta el proyecto, generar la clave interna:

```
docker exec -it php php artisan key:generate
```

La APP_KEY es utilizada por Laravel para:

- Encriptar datos.

- Proteger sesiones.

- Firmar información sensible.

### 2.6 Migraciones y Datos Iniciales

Si la base de datos no se creó correctamente:

```
docker exec -it php bash
php artisan migrate
php artisan db:seed
```

### 2.7 Acceso al Sistema

Una vez levantado el entorno:

```
http://localhost
```

Para verificar contenedores activos:

```
docker ps
```

### 2.8 Comandos Útiles

Detener entorno:

```
docker compose -f docker-compose.dev.yaml down
```

Ver logs del contenedor:

```
docker logs php
```

## 3. Consideraciones

- En desarrollo se utiliza docker-compose.dev.yaml.

- La aplicación requiere autenticación con segundo factor vía email.

- El sistema está preparado para escalar agregando nuevos programas, cuestionarios y funcionalidades sin modificar su
  arquitectura base.

## 4. Estructura General del Proyecto

El sistema está estructurado en módulos funcionales:

- Gestión de Usuarios

- Gestión de Unidades de Atención

- Gestión de Contactos

- Agenda y Citas

- Autodiagnóstico

- Planes de Acción

- Programas y Postulaciones

- Reportes y Consultas

Cada módulo responde a los requisitos funcionales definidos en la especificación del sistema.
