Saltearse al contenido

Primeros pasos

1. Instalación

Ventana de terminal
git clone https://github.com/eCondorDigital/exercise-engine.git
cd exercise-engine
npm install

2. Configurar variables de entorno

Ventana de terminal
cp .env.example .env

Edita .env:

HTTP_PORT=4000
TCP_PORT=4001
TCP_HOST=0.0.0.0
API_KEY=sk_default_dev_key_change_in_production
TTS_SERVICE_URL=http://tts-service:8000

3. Generar tu primera API Key

Opción A: Usar la key por defecto

La variable API_KEY en tu .env ya funciona:

sk_default_dev_key_change_in_production

⚠️ Cámbiala en producción.

Opción B: Generar una nueva key vía API

Inicia el servidor:

Ventana de terminal
npm run start:dev

Luego llama al endpoint de administración:

Ventana de terminal
curl -X POST http://localhost:4000/api/v1/admin/keys \
-H "Content-Type: application/json" \
-d '{"name": "mi-app-frontend"}'

Respuesta:

{
"key": "sk_a1b2c3d4e5f6...",
"message": "Save this key securely. It will not be shown again."
}

Guarda la key inmediatamente. Nunca se mostrará de nuevo.

Opción C: Generar manualmente

Ventana de terminal
node -e "console.log('sk_' + require('crypto').randomBytes(24).toString('hex'))"

Luego configúrala en tu .env:

API_KEY=tu_key_generada

4. Listar API keys activas

Ventana de terminal
curl http://localhost:4000/api/v1/admin/keys

Respuesta:

[
{
"keyPreview": "sk_a1b2c...xyz9",
"name": "mi-app-frontend",
"createdAt": "2026-05-04T13:00:00.000Z",
"lastUsedAt": "2026-05-04T13:05:00.000Z",
"isActive": true
}
]

5. Evaluar un ejercicio

Ventana de terminal
curl -X POST http://localhost:4000/api/v1/exercises/evaluate \
-H "x-api-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"exerciseId": "ex_001",
"area": "listening",
"type": "multiple_choice",
"answer": "B",
"correctAnswer": "B",
"difficulty": 2
}'

Respuesta:

{
"correct": true,
"score": 10,
"feedback": "Correct!",
"metadata": {
"area": "listening",
"type": "multiple_choice"
}
}

6. Explorar API Docs

Abre tu navegador en:

http://localhost:4000/api/docs

Verás la interfaz Swagger con:

  • Todos los endpoints documentados
  • Ejemplos de request/response
  • Botón “Authorize” para agregar tu API key
  • Testing interactivo (Try it out)

7. Correr con Docker

Ventana de terminal
docker compose up -d --build

Ambos servicios (NestJS + TTS) corren juntos.

Siguientes pasos