# Core - Núcleo de la Fábrica de Software

## Descripción

El directorio `core/` contiene todo lo que se comparte a nivel de **fábrica**, no de proyecto individual:

- Sistema de orquestación de agentes
- Módulos de código reutilizables
- Estándares técnicos y de negocio
- Directivas globales para agentes/subagentes
- Constantes y tipos universales

## Estructura

```
core/
├── modules/                    # Código compartido ejecutable
│   ├── utils/                  # Utilidades universales ✅
│   │   ├── date.util.ts        # Manipulación de fechas
│   │   ├── string.util.ts      # Manipulación de strings
│   │   ├── validation.util.ts  # Validaciones
│   │   └── index.ts
│   ├── auth/                   # Autenticación (por implementar)
│   ├── billing/                # Facturación
│   ├── notifications/          # Notificaciones
│   ├── payments/               # Pagos
│   └── multitenant/            # Multi-tenancy
│
├── constants/                  # Constantes globales ✅
│   ├── enums.constants.ts      # Enums universales
│   ├── regex.constants.ts      # Patrones regex
│   └── index.ts
│
├── types/                      # Tipos TypeScript compartidos ✅
│   ├── api.types.ts            # Tipos de API
│   ├── common.types.ts         # Tipos comunes
│   └── index.ts
│
├── catalog/                    # Documentación de funcionalidades
│   ├── auth/
│   ├── notifications/
│   └── ...
│
├── orchestration/              # Sistema de agentes NEXUS
│   ├── agents/
│   ├── directivas/
│   ├── templates/
│   └── referencias/
│
└── standards/                  # Estándares técnicos globales
    ├── CODING-STANDARDS.md
    ├── TESTING-STANDARDS.md
    └── ...
```

## Uso

### Importar Utilidades

```typescript
// En cualquier proyecto del workspace
import { formatDate, slugify, isEmail } from '@core/modules/utils';

// O importar específico
import { formatToISO, addDays } from '@core/modules/utils/date.util';
```

### Importar Constantes

```typescript
import { UserStatus, PaymentStatus } from '@core/constants';
import { EMAIL_REGEX, UUID_REGEX } from '@core/constants/regex.constants';
```

### Importar Tipos

```typescript
import { ApiResponse, PaginatedResponse } from '@core/types';
import { BaseEntity, Address } from '@core/types/common.types';
```

## Módulos Disponibles

### Utils (`@core/modules/utils`)

| Archivo | Funciones | Descripción |
|---------|-----------|-------------|
| `date.util.ts` | formatDate, addDays, diffInDays, etc. | Manipulación de fechas |
| `string.util.ts` | slugify, capitalize, truncate, etc. | Manipulación de strings |
| `validation.util.ts` | isEmail, isUUID, isStrongPassword, etc. | Validaciones |

### Constants (`@core/constants`)

| Archivo | Contenido |
|---------|-----------|
| `enums.constants.ts` | UserStatus, PaymentStatus, NotificationType, etc. |
| `regex.constants.ts` | EMAIL_REGEX, UUID_REGEX, PHONE_REGEX, etc. |

### Types (`@core/types`)

| Archivo | Tipos |
|---------|-------|
| `api.types.ts` | ApiResponse, PaginatedResponse, ErrorCodes |
| `common.types.ts` | BaseEntity, Address, Money, Result |

## Proyectos que Usan Core

- **Gamilit** - Plataforma educativa de gamificación
- **Trading Platform** - OrbiQuant IA trading
- **ERP Suite** - Sistema ERP multi-vertical

## Sistema de Orquestación
Los agentes cargan automáticamente las directivas de `core/orchestration/directivas/` al inicializar.

## Ver También

- [Sistema de Orquestación](orchestration/README.md)
- [Catálogo de Funcionalidades](catalog/README.md)
- [Plan de Organización](../PLAN-ORGANIZACION-WORKSPACE.md)
