# SLM Framework

Un framework PHP moderno para construir aplicaciones web con Elasticsearch como almacén de datos principal.

## Características

- **Sin Base de Datos SQL**: Utiliza Elasticsearch 7.9+ para todo el almacenamiento de datos
- **Gestión de Sesiones**: Sesiones almacenadas en Elasticsearch con persistencia automática
- **Autenticación de Dos Factores**: Inicio de sesión basado en código de seguridad por email
- **Sistema de Permisos Avanzado**:
  - ACL basado en perfiles (Access Control List)
  - Permisos específicos a nivel de usuario (override de perfil)
  - Control granular (read, create, update, delete)
- **Módulos de Configuración**: Gestión centralizada del sistema
  - `config.users`: Gestión de usuarios y permisos personalizados
  - `config.profile`: Creación y edición de perfiles ACL
  - `config.modules`: Registro de módulos
- **Perfil SLM Super**: Perfil administrativo con acceso completo
- **Arquitectura Modular**: Estructura de archivos organizada para vistas, handlers AJAX y lógica
- **Procesamiento del Lado del Servidor**: Integración incorporada con DataTables y Bootstrap Table
- **Listo para Docker**: Entorno de desarrollo completo con Docker Compose

## Requisitos

- PHP 8.3 o superior
- Composer
- Elasticsearch 7.9+
- Docker y Docker Compose (recomendado)

## Inicio Rápido

### 1. Clonar el Repositorio

```bash
git clone <url-repositorio> mi-proyecto
cd mi-proyecto
```

### 2. Configurar Entorno

```bash
cp .env.example appweb/.env
```

Edita `appweb/.env` con tu configuración.

### 3. Iniciar Servicios Docker

```bash
docker-compose up --build -d
```

### 4. Instalar Dependencias

```bash
cd appweb/slm.framework/system
composer install
```

### 5. Configurar SLM Super (IMPORTANTE)

> ⚠️ **PRIMER PASO CRÍTICO:** Antes de usar el sistema, debes crear el perfil SLM Super y usuario administrador.

```bash
# Ejecutar script de setup
php scripts/setup-slm-super.php
```

Este script crea:
- ✅ Perfil **SLM Super** (acceso a configuración)
- ✅ Módulos core (`config.users`, `config.profile`, `config.modules`)
- ✅ Usuario administrador
- ✅ Estructura de menú

**Credenciales por defecto:**
- Email: `admin@example.com`
- Password: `admin123`

📚 **Ver guía detallada:** [SLM Super Quick Start](02-slm-super-quick-start.md)

### 6. Acceder a la Aplicación

- **Aplicación**: http://localhost
- **Kibana**: http://localhost:5601
- **MailHog**: http://localhost:8025

## Estructura del Proyecto

```
mi-proyecto/
├── appweb/
│   ├── .env                        # Configuración
│   ├── public/
│   │   └── index.slm               # Punto de entrada
│   ├── assets/                     # Archivos estáticos
│   └── slm.framework/
│       ├── system/                 # Core del framework
│       ├── security/               # Autenticación
│       └── modules/                # Módulos de la aplicación
├── docs/
│   └── es_MX/                      # Documentación en español
└── docker-compose.yml
```

## Documentación

### 🚀 Inicio Rápido
- 🎯 **[SLM Super Quick Start](02-slm-super-quick-start.md)** - **EMPEZAR AQUÍ** - Primera configuración
- [Guía de Inicio](01-getting-started.md) - Instalación y configuración completa

### 📚 Guías Principales
- 📘 **[Guía Completa de Módulos](05-modules-complete-guide.md)** - Módulos, menús y permisos
- 🔐 **[Permisos Específicos de Usuario](06-user-specific-permissions.md)** - Sistema de dos niveles
- 📖 [Profile, User, Module & Menu](03-profile-user-module-menu.md) - Ejemplos de Elasticsearch

### 🏗️ Sistema y Desarrollo
- [Arquitectura](10-ARCHITECTURE.md) - Arquitectura del sistema y patrones de diseño
- [Desarrollo de Módulos](04-modules.md) - Creación de módulos
- [Guía de Elasticsearch](07-elasticsearch.md) - Operaciones de datos
- [Guía de Seguridad](08-security.md) - Autenticación y ACL
- [Referencia de API](09-api-reference.md) - Documentación de funciones
- [Estándares de Código](11-STANDARDS.md) - Mejores prácticas

## Servicios Docker

| Servicio | Puerto | Descripción |
|----------|--------|-------------|
| app | 80 | PHP 8.3 / Apache |
| elasticsearch | 9200 | Elasticsearch 7.9.3 |
| kibana | 5601 | Interfaz Kibana |
| mailhog | 8025 | Pruebas de email |

## Comandos Básicos

```bash
# Iniciar servicios
docker-compose up -d

# Ver logs
docker-compose logs -f app

# Detener servicios
docker-compose down

# Reconstruir contenedores
docker-compose up --build -d

# Acceder al contenedor PHP
docker-compose exec app bash
```

## Licencia

Licencia MIT
