Instalación
Requisitos
- Node.js 18 o superior
- npm, yarn o pnpm
- Cuenta en Evolution API (o instancia propia)
Instalación del SDK
npm install @camarauth/sdk
Instalación de dependencias adicionales
Si necesitas usar PostgreSQL para persistencia:
npm install pg
npm install -D @types/pg
Para TypeScript:
npm install -D typescript ts-node @types/node
Configuración de TypeScript
Crea un archivo tsconfig.json:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"lib": ["ES2020"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
Configuración de variables de entorno
Crea un archivo .env:
# Servidor
PORT=3001
HOST=0.0.0.0
# Seguridad
JWT_SECRET=tu-secreto-super-seguro-minimo-32-caracteres
# Evolution API
EVOLUTION_API_URL=https://tu-evolution-api.com
EVOLUTION_API_KEY=tu-api-key-aqui
EVOLUTION_INSTANCE_NAME=mi-instancia
# Configuración
PIN_EXPIRATION_MINUTES=3
CORS_ORIGINS=http://localhost:5173,https://tu-app.com
# Base de datos (opcional)
DATABASE_URL=postgresql://user:pass@localhost:5432/camarauth
¡Nunca comitees el archivo .env! Agrégalo a tu .gitignore.
Estructura del proyecto
camarauth-server/
├── src/
│ ├── index.ts
│ └── types.d.ts
├── .env
├── .env.example
├── .gitignore
├── package.json
└── tsconfig.json
Primer servidor
Crea src/index.ts:
import { CamarauthBackend } from '@camarauth/sdk/server';
import dotenv from 'dotenv';
dotenv.config();
const backend = new CamarauthBackend({
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: parseInt(process.env.PIN_EXPIRATION_MINUTES || '3'),
corsOrigins: process.env.CORS_ORIGINS?.split(',') || ['http://localhost:5173']
});
backend.start();
Ejecutar
# Desarrollo
npx ts-node src/index.ts
# Producción
npm run build
npm start
Scripts de package.json
{
"scripts": {
"dev": "ts-node src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
}
}
Verificación
Abre tu navegador en http://localhost:3001/health:
{
"status": "ok",
"timestamp": "2024-01-01T00:00:00.000Z",
"activePins": 0,
"instance": "mi-instancia"
}
¡Listo! Tu servidor está corriendo.