Skip to main content

BackendConfig

Interface de configuración para inicializar CamarauthBackend.

Propiedades

port

Puerto en el que escuchará el servidor HTTP.
port
number
default:"3001"
Puerto del servidor
port: 3001

host

Host en el que escuchará el servidor.
host
string
default:"'0.0.0.0'"
Host del servidor. ‘0.0.0.0’ escucha en todas las interfaces.
host: '0.0.0.0'  // Escucha en todas las interfaces

jwtSecret

Secreto para firmar los tokens JWT.
jwtSecret
string
required
Secreto para JWT. Debe ser seguro en producción.
¡Nunca uses el secreto por defecto en producción!
jwtSecret: 'tu-secreto-super-seguro-minimo-32-caracteres'

evolutionApiUrl

URL base de la API de Evolution.
evolutionApiUrl
string
required
URL de tu instancia de Evolution API
evolutionApiUrl: 'https://api.evolution.com'

evolutionApiKey

API Key de Evolution.
evolutionApiKey
string
required
Tu API Key de Evolution
evolutionApiKey: 'tu-api-key-aqui'

evolutionInstanceName

Nombre de la instancia de Evolution.
evolutionInstanceName
string
required
Nombre de la instancia configurada en Evolution
evolutionInstanceName: 'mi-instancia-whatsapp'

pinExpirationMinutes

Tiempo de expiración de los PINs en minutos.
pinExpirationMinutes
number
default:"3"
Minutos antes de que expire un PIN
pinExpirationMinutes: 3  // 3 minutos

corsOrigins

Orígenes permitidos para CORS.
corsOrigins
string | string[]
URLs permitidas para CORS
// Un solo origen
corsOrigins: 'https://mi-app.com'

// Múltiples orígenes
corsOrigins: [
  'http://localhost:5173',
  'https://mi-app.com',
  'https://app.mi-dominio.com'
]

database

Adaptador de base de datos (opcional). Puede ser PostgreSQL, MongoDB, Redis, o un adaptador personalizado.
database
DatabaseAdapter
Adaptador para persistencia de usuarios y sesiones. Si no se proporciona, usa memoria RAM.

Opciones disponibles

PostgreSQL:
import { PostgreSQLAdapter } from '@camarauth/sdk/server';
import { Pool } from 'pg';

const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});

const config: BackendConfig = {
  // ... otras opciones
  database: new PostgreSQLAdapter(pool)
};
MongoDB:
import { MongoDBAdapter } from '@camarauth/sdk/server';
import { MongoClient } from 'mongodb';

const client = new MongoClient(process.env.MONGODB_URI!);
await client.connect();

const config: BackendConfig = {
  // ... otras opciones
  database: new MongoDBAdapter(client.db('myapp'))
};
Redis:
import { RedisAdapter } from '@camarauth/sdk/server';
import { createClient } from 'redis';

const redis = createClient({ url: process.env.REDIS_URL });
await redis.connect();

const config: BackendConfig = {
  // ... otras opciones
  database: new RedisAdapter(redis, { userProvider: myUserProvider })
};
Sin base de datos (memoria):
const config: BackendConfig = {
  // ... otras opciones
  // No incluir 'database' - usa memoria RAM
};

Ejemplo completo

Con PostgreSQL

import { CamarauthBackend, BackendConfig, PostgreSQLAdapter } from '@camarauth/sdk/server';
import { Pool } from 'pg';

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: false
  }
});

const config: BackendConfig = {
  port: parseInt(process.env.PORT || '3001'),
  host: process.env.HOST || '0.0.0.0',
  jwtSecret: process.env.JWT_SECRET!,
  evolutionApiUrl: process.env.EVOLUTION_API_URL!,
  evolutionApiKey: process.env.EVOLUTION_API_KEY!,
  evolutionInstanceName: process.env.EVOLUTION_INSTANCE_NAME!,
  pinExpirationMinutes: 3,
  corsOrigins: [
    'http://localhost:5173',
    'https://mi-app.com'
  ],
  database: new PostgreSQLAdapter(pool)
};

const backend = new CamarauthBackend(config);
backend.start();

Sin base de datos (modo memoria)

import { CamarauthBackend, BackendConfig } from '@camarauth/sdk/server';

const config: BackendConfig = {
  port: 3001,
  jwtSecret: process.env.JWT_SECRET!,
  evolutionApiUrl: process.env.EVOLUTION_API_URL!,
  evolutionApiKey: process.env.EVOLUTION_API_KEY!,
  evolutionInstanceName: process.env.EVOLUTION_INSTANCE_NAME!,
  corsOrigins: ['http://localhost:5173']
  // Sin 'database' - usa memoria RAM
};

const backend = new CamarauthBackend(config);
backend.start();

Variables de entorno

Puedes usar variables de entorno para configurar el backend:
# .env
PORT=3001
HOST=0.0.0.0
JWT_SECRET=tu-secreto-super-seguro
EVOLUTION_API_URL=https://api.evolution.com
EVOLUTION_API_KEY=tu-api-key
EVOLUTION_INSTANCE_NAME=mi-instancia
PIN_EXPIRATION_MINUTES=3
CORS_ORIGINS=http://localhost:5173,https://mi-app.com
DATABASE_URL=postgresql://user:pass@localhost/camarauth
const backend = new CamarauthBackend({
  port: parseInt(process.env.PORT || '3001'),
  jwtSecret: process.env.JWT_SECRET!,
  evolutionApiUrl: process.env.EVOLUTION_API_URL!,
  evolutionApiKey: process.env.EVOLUTION_API_KEY!,
  evolutionInstanceName: process.env.EVOLUTION_INSTANCE_NAME!
});

Véase también