Volver a proyectos
Nivel Intermedio-Alto

0xNeko English

Node.js • Python • DeepSeek V3 • Playwright • SQLite

#ETL #IA Generativa #Node.js #Python #Playwright #Anki #TTS
Demo en video disponible
Screenshot de 0xNeko English
Stack:
Node.js
Python
SQLite
Demo en video

Motor ETL asíncrono que orquesta Node.js y Python para refinar vocabulario en inglés con IA generativa (DeepSeek V3), generar audio neuronal (ElevenLabs TTS) y empaquetar el resultado en mazos de Anki ejecutables .apkg — tolerante a fallos de red, baneos IP y errores 503 de API mediante checkpointing continuo en SQLite: si el proceso se interrumpe, retoma exactamente donde se quedó, sin perder horas de cómputo ni saldo de API.


🚀 Impacto y Números

  • 0 pérdida de datos ante fallos: checkpointing SQLite guarda el estado al término de cada lote — un 503 de la IA no tira el trabajo previo
  • Concurrencia controlada: p-limit acota los workers paralelos para prevenir picos de memoria y banneos por rate limiting
  • Pipeline dual-runtime: scraping pesado I/O en Node.js (V8), empaquetado binario .apkg en Python con genanki — cada runtime donde es más eficiente
  • Output listo para usar: archivo .apkg directamente importable en Anki con audio neural incluido

⚡ Cómo está construido

Orquestación asíncrona tolerante a fallos

  • Pool de concurrencia dinámico: p-limit limita estrictamente las promesas paralelas — previene picos de memoria y el ban por exceso de requests simultáneos a las APIs externas
  • Checkpointing por lotes: if(success) then saveDatabase() al término de cada batch — si La API lanza 503, el lote en curso se purga y se marca como fallido, pero los miles de registros previos quedan intactos en SQLite
  • Sistema de reintentos con marcadores offline: flags en SQLite identifican palabras pendientes vs. completadas — la reanudación es exacta, no desde cero

Pipeline ETL multi-etapa

  • Extracción con Playwright headless: scraping de contenido lingüístico desde fuentes externas con Chromium integrado en el flujo transaccional
  • Refinamiento con DeepSeek V3: prompt engineering para limpiar, enriquecer y reformatear el vocabulario crudo en estructuras útiles para el aprendizaje
  • Audio neuronal con ElevenLabs TTS: genera pronunciación de calidad nativa por palabra, embebida directamente en el .apkg

Arquitectura híbrida Node.js + Python

  • Node.js para I/O asíncrono: manejo de todas las llamadas a APIs externas, scraping y lógica de orquestación donde la concurrencia de V8 es la ventaja
  • Python para empaquetado binario: genanki gestiona el formato propietario de Anki (.apkg = SQLite + zip con estructura específica) — usar la librería madura en vez de reimplementar el formato

🛠️ Stack

Core: Node.js ESM (async/await, p-limit), Python 3 Web Automation: Playwright (Chromium headless) IA & Media: DeepSeek V3 API, ElevenLabs Neural TTS Storage: SQLite (sql.js in-memory + persistencia para checkpoints) Output: genanki (Python) para empaquetado .apkg Patterns: ETL pipeline, Worker Pool, Checkpoint/Resume, Dual-Runtime Orchestration


💼 Lo que este proyecto demuestra

Este proyecto demuestra que puedo:

  • ✅ Construir herramientas de backend no triviales — sin frontend, sin CRUD, puro procesamiento de datos
  • ✅ Diseñar sistemas tolerantes a fallos reales de producción: rate limits, timeouts, errores de API, interrupciones de red
  • ✅ Orquestar múltiples runtimes y servicios heterogéneos (Node + Python + Playwright + DeepSeek + ElevenLabs) en un pipeline coherente
  • ✅ Aplicar pensamiento de ingeniería de datos a escala pequeña: batching, checkpointing, reanudación exacta

Diferenciador clave: Mientras la mayoría de portfolios junior muestran CRUDs con autenticación, este es data engineering en micro — tolerante a fallos lógicos de forma explícita y deliberada. Demuestra que entiendes por qué y cuándo una llamada externa puede romper una app y cómo prevenirlo.