# @skailan/core

Servicio de autenticación y multitenancy para la plataforma Skailan.

## Descripción

Este módulo proporciona la funcionalidad base de autenticación, autorización y gestión de multitenancy para la plataforma Skailan. Incluye:

- Autenticación de usuarios con JWT
- Gestión de organizaciones y membresías
- Sistema de permisos y roles
- Multitenancy con esquemas de base de datos separados
- Gestión de productos y pagos

## Instalación

```bash
npm install @skailan/core
```

## Uso

### Importación básica

```typescript
import { app } from '@skailan/core';

// El servidor se inicia automáticamente
app.listen(3006, () => {
  console.log('Core service running on port 3006');
});
```

### Configuración de variables de entorno

```env
DATABASE_URL="postgresql://user:password@localhost:5432/skailan"
JWT_SECRET="your-jwt-secret"
RESEND_API_KEY="your-resend-api-key"
```

## API Endpoints

### Autenticación
- `POST /auth/login` - Iniciar sesión
- `POST /auth/register` - Registrar usuario
- `POST /auth/forgot-password` - Solicitar restablecimiento de contraseña
- `POST /auth/reset-password` - Restablecer contraseña

### Organizaciones
- `GET /organizations` - Listar organizaciones
- `POST /organizations` - Crear organización
- `GET /organizations/:id` - Obtener organización
- `PUT /organizations/:id` - Actualizar organización

### Membresías
- `GET /memberships` - Listar membresías
- `POST /memberships` - Crear membresía
- `GET /memberships/:id` - Obtener membresía

## Características

- **Multitenancy**: Cada organización tiene su propio esquema de base de datos
- **Autenticación JWT**: Tokens seguros para autenticación
- **Gestión de permisos**: Sistema de roles y permisos granular
- **Migraciones automáticas**: Migraciones de esquemas por tenant
- **Validación de datos**: Validación robusta de entrada

## Dependencias

- Express.js para el servidor web
- Prisma para ORM y migraciones
- JWT para autenticación
- bcryptjs para hash de contraseñas
- Resend para envío de emails

## Desarrollo

```bash
# Instalar dependencias
npm install

# Ejecutar en modo desarrollo
npm run dev

# Construir para producción
npm run build

# Generar cliente Prisma
npm run prisma:generate

# Ejecutar migraciones
npm run prisma:migrate
```

## Licencia

MIT 