Dossier técnico · Cómo se construyó

La ingeniería detrás de GO GLOBAL.

VOKLY es una plataforma gamificada para aprender inglés técnico, pensada para profesionales tech de LATAM. Esta es la historia de cómo está construida: con qué stack, con qué decisiones y con qué medidas de seguridad y privacidad la sostienen.

728Ejercicios
8Tipos de ejercicio
91Lecciones
5Perfiles tech
18Tablas con RLS
0Frameworks JS
01 — El objetivo

Destrabar el inglés que frena una carrera tech

En LATAM sobra talento técnico, pero el idioma es la barrera que separa a un profesional de un rol internacional (y del sueldo que viene con él). VOKLY no es "otra app de inglés": enseña el vocabulario, las frases y las situaciones reales del trabajo tech, segmentadas por perfil.

El mensaje no es "aprendé inglés" — es GO GLOBAL: usá lo que ya sabés para trabajar en cualquier parte del mundo.

5 perfiles, un camino cada uno

  • Data Analyst
  • Data Scientist
  • Data Engineer
  • Software Developer
  • Agentic AI Engineer

Más un módulo transversal de vocabulario de IA. Cada perfil tiene su propio recorrido de misiones, y el progreso se guarda por perfil.

Gameplay

Gamificado de verdad

Misiones, XP, niveles Junior→Staff, rachas, corazones y una mascota —Ducky— que acompaña el camino. Estilo Duolingo, mundo tech.

Práctica

Del ejercicio a la entrevista

Simulador de entrevistas por voz con feedback de IA, traducción técnica, escucha y escritura. 8 tipos de ejercicio.

Contexto

Pensado para LATAM

Ayuda en español, contenido angulado por rol, y una visión a futuro: enseñar el concepto técnico Y cómo decirlo en inglés, juntos.

02 — El stack

Simple por decisión, no por límite

Una regla marcó todo: sin frameworks de JavaScript. HTML, CSS y JS vanilla. Menos dependencias, menos superficie de ataque, cero deuda de build. El resto del stack es serverless y administrado.

Frontend
HTML + CSS + JavaScript vanilla — sin frameworks. PWA instalable (camino a Play Store vía TWA). Fuentes e íconos self-hosteados: nada de CDNs.
Backend
Vercel Functions (Node.js serverless). Toda lógica sensible vive acá: validaciones, pagos, IA. El navegador nunca ve un secreto.
Datos + Auth
Supabase — PostgreSQL con Row Level Security en todas las tablas, Auth y Storage. La base de datos es la última línea de defensa.
Inteligencia artificial
Claude API (Sonnet 5) — genera ejercicios, da pistas y evalúa entrevistas. Solo desde el servidor, nunca desde el frontend.
Pagos + Email
Mercado Pago (AR/LATAM) con webhooks firmados; PayPal a futuro para el exterior. Emails transaccionales por Resend.
Deploy
Vercel con flujo staging → producción. Service worker versionado (network-first). Migraciones aditivas verificadas contra la DB.
03 — Seguridad

Diez capas que asumen que el cliente miente

El principio: nada de lo que llega del navegador es confiable. Cada control importante se aplica del lado del servidor o en la base de datos, donde el usuario no puede tocarlo desde la consola.

RLS en las 18 tablas

Cada usuario solo ve y toca sus propias filas. La política vive en PostgreSQL, no en el código de la app.

Protección a nivel columna

Un trigger impide que un usuario se auto-otorgue Pro o falsee su edad — la RLS de Postgres no protege columnas, así que se cierra con un trigger. Testeado en vivo.

Secretos solo en el servidor

La service_role, la key de Claude y las de pago viven en variables de entorno. Jamás llegan al frontend.

Admin sin fugas

El panel lee vía funciones SECURITY DEFINER gateadas por is_vokly_admin() — nunca vistas que expongan datos.

Cabeceras endurecidas

CSP estricta (un solo dominio externo permitido), X-Frame-Options: DENY, nosniff y Referrer-Policy.

Age gate real

La edad se valida en el servidor, con consentimiento parental para 13-17 y bloqueo para menores de 13. No es un checkbox decorativo.

Pagos con firma verificada

El webhook de Mercado Pago valida la firma HMAC de cada evento: un evento falso se rechaza, no activa Pro.

Anti-bot sin fricción

Los formularios públicos usan honeypot + timing — frenan bots sin captcha ni terceros, sin molestar al usuario real.

Límites a la IA

Rate limiting por usuario en las llamadas a Claude: controla el costo y evita el abuso.

Self-hosted total

Fuentes, íconos y librerías se sirven desde el propio dominio. Sin CDNs = la IP de cada usuario no se filtra a terceros.

04 — Privacidad y menores

Datos mínimos, promesas cumplidas con código

VOKLY la usan adolescentes, así que la privacidad no es un anexo legal: es arquitectura. Se recolecta lo mínimo, y cada promesa hecha en la política se sostiene con código del lado del servidor, no con buena fe.

Los documentos legales (privacidad, términos, cookies) se construyeron sobre un inventario real de datos y están versionados: un cambio material dispara el re-consentimiento de todos.

  • Minimización: no se guarda lo que no se usa.
  • Derechos del titular: exportar y borrar de verdad la cuenta.
  • Retención y purga automática (tareas programadas diarias).
  • La voz del simulador de entrevistas es +18 y está declarada.
  • Los rankings públicos excluyen a los menores.
  • Registro de consentimiento con IP y versión, como prueba.

Una base sólida para escalar

Poco código, pocas dependencias, mucha disciplina en seguridad y datos. Eso hace que VOKLY sea rápida de mantener, barata de operar y segura para sus usuarios — incluso los más jóvenes.