PHPackages                             slimseed/framework - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. slimseed/framework

ActiveLibrary[Framework](/categories/framework)

slimseed/framework
==================

Framework Slim con DDD y arquitectura hexagonal - Instalable via Composer

v0.1.0(7mo ago)09PHPPHP &gt;=8.2

Since Sep 26Pushed 7mo agoCompare

[ Source](https://github.com/AndresEchavalete/slim-seed-project)[ Packagist](https://packagist.org/packages/slimseed/framework)[ RSS](/packages/slimseed-framework/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (13)Versions (9)Used By (0)

🚀 SlimSeed Framework - Arquitectura Hexagonal + DDD + Doctrine ORM
==================================================================

[](#-slimseed-framework---arquitectura-hexagonal--ddd--doctrine-orm)

**Framework PHP reutilizable** con **Slim Framework + DDD + Arquitectura Hexagonal + Doctrine ORM** listo para instalar en cualquier proyecto.

> **Instalable via Composer:** `composer require slimseed/framework` - Estructura profesional y escalable.

[![PHP Version](https://camo.githubusercontent.com/81943898d70129d190ba5d385a8758459ce57e7795b5122e1a148f4387a55131/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e322b2d626c75652e737667)](https://php.net)[![Slim Framework](https://camo.githubusercontent.com/dad5354c4c14e29a45431637b9d24cfd785e9ad3966af030d3492723fea8cf38/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f736c696d2d342e31352d677265656e2e737667)](https://slimframework.com)[![Doctrine ORM](https://camo.githubusercontent.com/f497cb8820bcf031fba3e592b0c377b75147cc05e4c0e73cff636159c9ca8ec9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f637472696e652d332e352d6f72616e67652e737667)](https://doctrine-project.org)[![Docker](https://camo.githubusercontent.com/7aa3db3a76815f8fcf908306a6362b4d888fb1666e3ca528782576d6da67b986/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f636b65722d72656164792d626c75652e737667)](https://docker.com)

📋 Tabla de Contenidos
---------------------

[](#-tabla-de-contenidos)

- [🏗️ Arquitectura](#%EF%B8%8F-arquitectura)
- [🚀 Características](#-caracter%C3%ADsticas)
- [🛠️ Instalación](#%EF%B8%8F-instalaci%C3%B3n)
- [🔧 Configuración](#-configuraci%C3%B3n)
- [📚 API Documentation](#-api-documentation)
- [🏛️ Arquitectura Hexagonal](#%EF%B8%8F-arquitectura-hexagonal)
- [🗄️ Base de Datos](#%EF%B8%8F-base-de-datos)
- [🧪 Testing](#-testing)
- [📖 Guías](#-gu%C3%ADas)

🏗️ Arquitectura
---------------

[](#️-arquitectura)

### **Principios Implementados**

[](#principios-implementados)

- ✅ **Arquitectura Hexagonal** (Puertos y Adaptadores)
- ✅ **Domain Driven Design (DDD)**
- ✅ **SOLID Principles**
- ✅ **Inyección de Dependencias**
- ✅ **Repository Pattern**
- ✅ **Unit of Work (Doctrine)**

### **Estructura de Capas**

[](#estructura-de-capas)

```
src/
├── Domain/                    # 🎯 CAPA DE DOMINIO
│   ├── Entities/              # Entidades de negocio (Doctrine)
│   ├── ValueObjects/          # Objetos de valor
│   ├── Services/              # 🚪 PUERTOS (Interfaces)
│   └── Repositories/          # 🚪 PUERTOS (Interfaces)
│
├── Application/               # 🎯 CAPA DE APLICACIÓN
│   ├── UseCases/              # Casos de uso
│   ├── DTOs/                  # Data Transfer Objects
│   └── Services/              # Servicios de aplicación
│
├── Infrastructure/            # 🔌 ADAPTADORES
│   ├── Services/              # Implementaciones de servicios
│   ├── External/              # Servicios externos (Email, Slack)
│   ├── Persistence/           # Repositorios Doctrine
│   └── Config/                # Configuraciones
│
├── Presentation/              # 🎯 CAPA DE PRESENTACIÓN
│   ├── Controllers/           # Controladores HTTP
│   ├── Middleware/            # Middleware de Slim
│   └── Routes/                # Definición de rutas
│
└── Shared/                    # 🎯 CAPA COMPARTIDA
    ├── Container/             # Configuración DI
    └── Exceptions/            # Excepciones compartidas

```

🚀 Características
-----------------

[](#-características)

### **Framework &amp; Tecnologías**

[](#framework--tecnologías)

- **Slim Framework 4.15** - Micro-framework PHP
- **Doctrine ORM 3.5** - Mapeo objeto-relacional
- **PHP-DI 7.1** - Inyección de dependencias
- **Monolog 3.9** - Logging avanzado
- **Docker** - Contenedores para desarrollo

### **Funcionalidades Implementadas**

[](#funcionalidades-implementadas)

- ✅ **Health Check** - Monitoreo del sistema
- ✅ **Gestión de Usuarios** - CRUD completo
- ✅ **Notificaciones** - Email y Slack
- ✅ **Historial de Salud** - Persistencia de estados
- ✅ **Migraciones** - Automáticas con Doctrine
- ✅ **API REST** - Endpoints documentados

🛠️ Instalación
--------------

[](#️-instalación)

### **📦 Como Paquete de Composer (Para Usuarios)**

[](#-como-paquete-de-composer-para-usuarios)

```
# 1. Crear nuevo proyecto
mkdir mi-api
cd mi-api

# 2. Inicializar Composer
composer init

# 3. Instalar SlimSeed Framework
composer require slimseed/framework:^0.2.2-beta

# 4. Ejecutar instalador automático
php vendor/slimseed/framework/install.php

# 5. Configurar variables (opcional)
nano .env

# 6. Iniciar con Docker
docker-compose up -d

# 7. Ejecutar migraciones
composer run migrate

# 8. Visitar: http://localhost:8081
```

### **🚀 Instalación Rápida (Sin Docker)**

[](#-instalación-rápida-sin-docker)

```
# 1. Instalar paquete
composer require slimseed/framework:^0.2.2-beta

# 2. Ejecutar instalador
php vendor/slimseed/framework/install.php

# 3. Configurar base de datos en .env
nano .env

# 4. Ejecutar migraciones
composer run migrate

# 5. Iniciar servidor local
php -S localhost:8000 -t public

# 6. Visitar: http://localhost:8000
```

### **🔧 Desarrollo del Framework (Para Contribuidores)**

[](#-desarrollo-del-framework-para-contribuidores)

```
# 1. Clonar el repositorio
git clone https://github.com/AndresEchavalete/slim-seed-project.git
cd slim-seed-project

# 2. Instalar dependencias
composer install

# 3. Levantar contenedores
docker-compose up -d

# 4. Ejecutar migraciones
composer run migrate

# 5. ¡Listo! El framework está en http://localhost:8081
```

### **Verificar Instalación**

[](#verificar-instalación)

```
# Probar endpoint de bienvenida
curl http://localhost:8081/

# Probar health check
curl http://localhost:8081/health
```

🔧 Configuración
---------------

[](#-configuración)

### **📦 Para Usuarios del Paquete**

[](#-para-usuarios-del-paquete)

El archivo `.env` se crea automáticamente al instalar. Puedes editarlo según tus necesidades:

```
# Aplicación
APP_ENV=development
APP_DEBUG=true
APP_NAME="Mi Proyecto API"

# Base de datos
DB_DRIVER=mysql
DB_HOST=mysql
DB_PORT=3306
DB_NAME=mi_proyecto
DB_USER=mi_usuario
DB_PASS=mi_contraseña

# Notificaciones
NOTIFICATION_TYPE=email  # email | slack
ADMIN_EMAIL=admin@mi-proyecto.com
SLACK_WEBHOOK=https://hooks.slack.com/...

# Logging
LOG_LEVEL=debug
```

### **🔧 Para Desarrolladores del Framework**

[](#-para-desarrolladores-del-framework)

**Puertos del Sistema:**

- **API**:
- **MySQL**: localhost:3307
- **Redis**: localhost:6380

**Variables de Entorno:**

```
# Aplicación
APP_ENV=development
APP_DEBUG=true
APP_NAME="Slim Seed Project"

# Base de datos
DB_DRIVER=mysql
DB_HOST=mysql
DB_PORT=3306
DB_NAME=slim_seed
DB_USER=slim_user
DB_PASS=slim_pass

# Notificaciones
NOTIFICATION_TYPE=email  # email | slack
ADMIN_EMAIL=admin@example.com
SLACK_WEBHOOK=https://hooks.slack.com/...

# Logging
LOG_LEVEL=debug
```

📚 API Documentation
-------------------

[](#-api-documentation)

### **Endpoints Principales**

[](#endpoints-principales)

#### **🏠 Bienvenida**

[](#-bienvenida)

```
GET /
```

**Respuesta:**

```
{
  "message": "¡Bienvenido a Slim Seed Project!",
  "version": "1.0.0",
  "architecture": "DDD + Hexagonal",
  "framework": "Slim 4 + DI Container",
  "timestamp": "2025-09-26 13:39:39"
}
```

#### **💚 Health Check**

[](#-health-check)

```
GET /health
```

**Respuesta:**

```
{
  "healthy": true,
  "message": "All systems operational",
  "checks": {
    "database": true,
    "redis": true,
    "memory": true
  }
}
```

### **👥 Gestión de Usuarios**

[](#-gestión-de-usuarios)

#### **Crear Usuario**

[](#crear-usuario)

```
POST /api/users
Content-Type: application/json

{
  "email": "test@example.com",
  "name": "Test User",
  "password": "password123"
}
```

#### **Obtener Usuarios Activos**

[](#obtener-usuarios-activos)

```
GET /api/users/active
```

#### **Obtener Usuario por ID**

[](#obtener-usuario-por-id)

```
GET /api/users/{id}
```

#### **Actualizar Nombre de Usuario**

[](#actualizar-nombre-de-usuario)

```
PUT /api/users/{id}/name
Content-Type: application/json

{
  "name": "Nuevo Nombre"
}
```

#### **Autenticar Usuario**

[](#autenticar-usuario)

```
POST /api/users/authenticate
Content-Type: application/json

{
  "email": "test@example.com",
  "password": "password123"
}
```

### **📊 Historial de Salud**

[](#-historial-de-salud)

#### **Último Estado**

[](#último-estado)

```
GET /api/health/latest
```

#### **Historial por Fechas**

[](#historial-por-fechas)

```
GET /api/health/history?from=2025-09-01&to=2025-09-30
```

### **🔔 Notificaciones**

[](#-notificaciones)

#### **Enviar Alerta**

[](#enviar-alerta)

```
POST /api/notifications/alert
Content-Type: application/json

{
  "message": "Sistema en mantenimiento",
  "context": {
    "duration": "2 hours"
  }
}
```

#### **Notificación de Prueba**

[](#notificación-de-prueba)

```
POST /api/notifications/test
```

🏛️ Arquitectura Hexagonal
-------------------------

[](#️-arquitectura-hexagonal)

### **Puertos (Interfaces)**

[](#puertos-interfaces)

```
// Domain/Services/HealthCheckServiceInterface.php
interface HealthCheckServiceInterface
{
    public function checkHealth(): HealthCheckResult;
}

// Domain/Repositories/UserRepositoryInterface.php
interface UserRepositoryInterface
{
    public function save(User $user): void;
    public function findById(int $id): ?User;
    public function findByEmail(string $email): ?User;
}
```

### **Adaptadores (Implementaciones)**

[](#adaptadores-implementaciones)

```
// Infrastructure/Services/HealthCheckService.php
class HealthCheckService implements HealthCheckServiceInterface
{
    public function checkHealth(): HealthCheckResult
    {
        // Implementación específica
    }
}

// Infrastructure/Persistence/DoctrineUserRepository.php
class DoctrineUserRepository implements UserRepositoryInterface
{
    public function save(User $user): void
    {
        $this->entityManager->persist($user);
        $this->entityManager->flush();
    }
}
```

### **Inyección de Dependencias**

[](#inyección-de-dependencias)

```
// Shared/Container/ContainerBuilder.php
HealthCheckServiceInterface::class => \DI\create(HealthCheckService::class)
UserRepositoryInterface::class => \DI\create(DoctrineUserRepository::class)
```

🗄️ Base de Datos
----------------

[](#️-base-de-datos)

### **Entidades Doctrine**

[](#entidades-doctrine)

#### **User Entity**

[](#user-entity)

```
#[ORM\Entity]
#[ORM\Table(name: 'users')]
class User
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column(type: Types::INTEGER)]
    private ?int $id = null;

    #[ORM\Column(type: Types::STRING, length: 100, unique: true)]
    private string $email;

    #[ORM\Column(type: Types::STRING, length: 255)]
    private string $name;

    #[ORM\Column(type: Types::BOOLEAN)]
    private bool $isActive = true;
}
```

### **Migraciones**

[](#migraciones)

```
# Crear esquema de base de datos
docker-compose exec -T app bash -c "cd /var/www/html && php scripts/migrate.php"

# Resetear base de datos
docker-compose exec -T app bash -c "cd /var/www/html && php scripts/reset-db.php"
```

### **Comandos de Desarrollo**

[](#comandos-de-desarrollo)

#### **📦 Para Usuarios del Paquete**

[](#-para-usuarios-del-paquete-1)

```
# Migraciones
composer run migrate              # Ejecutar migraciones
composer run reset-db             # Resetear BD
composer run migrate:status       # Estado de migraciones

# Docker
docker-compose up -d              # Levantar contenedores
docker-compose down               # Detener contenedores
docker-compose logs -f app        # Ver logs
```

#### **🔧 Para Desarrolladores del Framework**

[](#-para-desarrolladores-del-framework-1)

```
# Entrar al contenedor
docker-compose exec app bash

# Instalar dependencias
docker-compose exec -T app bash -c "cd /var/www/html && composer install"

# Ver logs
docker-compose logs -f app
```

🧪 Testing
---------

[](#-testing)

### **Ejemplos de Pruebas**

[](#ejemplos-de-pruebas)

```
# Crear usuario
curl -X POST http://localhost:8081/api/users \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","name":"Test User","password":"password123"}'

# Obtener usuarios activos
curl http://localhost:8081/api/users/active

# Probar autenticación
curl -X POST http://localhost:8081/api/users/authenticate \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"password123"}'
```

📦 Uso del Paquete
-----------------

[](#-uso-del-paquete)

### **🚀 Instalación Rápida**

[](#-instalación-rápida)

```
# 1. Crear proyecto
mkdir mi-api
cd mi-api
composer init

# 2. Instalar SlimSeed Framework
composer require slimseed/framework

# 3. ¡Listo! Se configura automáticamente
# Se crean: .env, docker-compose.yml, public/index.php, etc.

# 4. Levantar contenedores
docker-compose up -d

# 5. Ejecutar migraciones
composer run migrate

# 6. Visitar: http://localhost:8081
```

### **⚙️ Comandos Disponibles**

[](#️-comandos-disponibles)

```
# Migraciones
composer run migrate              # Ejecutar migraciones
composer run reset-db             # Resetear BD
composer run migrate:status       # Estado de migraciones

# Instalación
composer run slimseed:install     # Re-ejecutar instalador
```

### **📁 Estructura Creada**

[](#-estructura-creada)

```
mi-proyecto/
├── .env                          # Variables de entorno (creado automáticamente)
├── docker-compose.yml            # Configuración Docker (creado automáticamente)
├── public/index.php              # Punto de entrada (creado automáticamente)
├── README.md                     # Documentación del proyecto (creado automáticamente)
├── migrations/                   # Migraciones de BD (creado automáticamente)
├── config/                       # Configuraciones (creado automáticamente)
└── vendor/slimseed/framework/    # Paquete instalado

```

### **🎯 Personalización**

[](#-personalización)

Después de la instalación, puedes:

- ✅ Editar `.env` para configurar variables
- ✅ Agregar nuevas entidades en `src/`
- ✅ Crear migraciones personalizadas
- ✅ Modificar rutas y controladores
- ✅ Agregar middleware personalizado

### **🗄️ Soporte Multi-Base de Datos**

[](#️-soporte-multi-base-de-datos)

SlimSeed Framework soporta múltiples bases de datos:

#### **MySQL (Por defecto)**

[](#mysql-por-defecto)

```
DB_DRIVER=mysql
DB_HOST=mysql
DB_PORT=3306
DB_NAME=mi_proyecto
DB_USER=mi_usuario
DB_PASS=mi_contraseña
```

#### **PostgreSQL**

[](#postgresql)

```
DB_DRIVER=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_NAME=mi_proyecto
DB_USER=mi_usuario
DB_PASS=mi_contraseña
```

#### **SQLite**

[](#sqlite)

```
DB_DRIVER=sqlite
DB_NAME=data/mi_proyecto
# No requiere DB_HOST, DB_PORT, DB_USER, DB_PASS
```

#### **Detección Automática**

[](#detección-automática)

El framework detecta automáticamente el tipo de BD por:

- Variable `DB_DRIVER`
- Puerto (5432 = PostgreSQL, 3306 = MySQL)
- Host (contiene "postgres" = PostgreSQL)
- Variable `DATABASE_URL`

### **🐳 Opciones de Instalación**

[](#-opciones-de-instalación)

#### **Con Docker (Recomendado)**

[](#con-docker-recomendado)

- ✅ Entorno aislado y consistente
- ✅ Fácil configuración de servicios
- ✅ No requiere instalación local de BD
- ✅ Ideal para desarrollo y producción

```
# Instalación automática con Docker
composer require slimseed/framework
docker-compose up -d
composer run migrate
# Listo en http://localhost:8081
```

#### **Sin Docker (Local)**

[](#sin-docker-local)

- ✅ Más ligero y rápido
- ✅ Acceso directo a archivos
- ✅ Ideal para desarrollo simple
- ✅ Requiere BD local instalada

```
# Instalación local
composer require slimseed/framework
# Configurar .env con BD local
composer run migrate
php -S localhost:8000 -t public
# Listo en http://localhost:8000
```

#### **SQLite (Sin Servidor)**

[](#sqlite-sin-servidor)

- ✅ No requiere servidor de BD
- ✅ Archivo de base de datos local
- ✅ Ideal para prototipos y testing
- ✅ Funciona sin Docker

```
# Configurar .env
DB_DRIVER=sqlite
DB_NAME=data/mi_proyecto

# Ejecutar
composer run migrate
php -S localhost:8000 -t public
```

📖 Guías
-------

[](#-guías)

### **📦 Para Usuarios del Paquete**

[](#-para-usuarios-del-paquete-2)

- [Guía de Instalación](docs/INSTALLATION.md) - Cómo instalar y usar el paquete
- [Ejemplo de Uso](examples/quick-start.md) - Tutorial completo paso a paso
- [API Documentation](docs/API.md) - Documentación de endpoints

### **🔧 Para Desarrolladores del Framework**

[](#-para-desarrolladores-del-framework-2)

- [Guía de Desarrollo](docs/development.md) - Desarrollo del framework
- [Arquitectura Hexagonal](docs/architecture.md) - Explicación de la arquitectura
- [Patrones DDD](docs/ddd-patterns.md) - Patrones de Domain Driven Design

### **🚀 Despliegue**

[](#-despliegue)

- [Docker Production](docs/docker-production.md) - Despliegue con Docker
- [Configuración de Servidor](docs/server-setup.md) - Configuración de servidor

### **🤝 Contribución**

[](#-contribución)

- [Guía de Contribución](docs/contributing.md) - Cómo contribuir al proyecto
- [Estándares de Código](docs/coding-standards.md) - Estándares de código

🎯 Beneficios de esta Arquitectura
---------------------------------

[](#-beneficios-de-esta-arquitectura)

1. **Testabilidad** - Fácil mock de dependencias
2. **Mantenibilidad** - Separación clara de responsabilidades
3. **Flexibilidad** - Intercambio fácil de adaptadores
4. **Escalabilidad** - Estructura preparada para crecimiento
5. **Independencia** - El dominio no depende de infraestructura
6. **Productividad** - Desarrollo rápido con patrones establecidos

🚀 Próximos Pasos
----------------

[](#-próximos-pasos)

- Autenticación JWT
- Validación de entrada con Respect/Validation
- Tests unitarios con PHPUnit
- Cache con Redis
- Documentación OpenAPI
- CI/CD con GitHub Actions

---

**¡Proyecto listo para desarrollo con Arquitectura Hexagonal completa!** 🎉

**Desarrollado con ❤️ usando Slim Framework + DDD + Doctrine ORM**

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance62

Regular maintenance activity

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

7

Last Release

234d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c0caf4f83c4c69fa1bbe5aa5cc80390dab54875caf55a88162ec565af75a1187?d=identicon)[AndresEchavalete](/maintainers/AndresEchavalete)

---

Top Contributors

[![AndresEchavalete](https://avatars.githubusercontent.com/u/101657471?v=4)](https://github.com/AndresEchavalete "AndresEchavalete (9 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/slimseed-framework/health.svg)

```
[![Health](https://phpackages.com/badges/slimseed-framework/health.svg)](https://phpackages.com/packages/slimseed-framework)
```

###  Alternatives

[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[bacula-web/bacula-web

The open source web based reporting and monitoring tool for Bacula

1537.5k](/packages/bacula-web-bacula-web)[phlak/directory-lister

PHP directory lister

2.5k1.4k](/packages/phlak-directory-lister)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

7310.3k29](/packages/open-dxp-opendxp)[forme/framework

An MVC framework for WordPress.

175.0k3](/packages/forme-framework)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
