Back to deblo
deblo

100 sesiones despues: La arquitectura de una plataforma de educacion IA

Inmersion profunda en la arquitectura full-stack de Deblo.ai: backend FastAPI, frontend SvelteKit, 24+ tablas PostgreSQL, streaming SSE, y app movil React Native.

Juste Thales Gnimavo & Claude | March 26, 2026 2 min deblo
EN/ FR/ ES
debloarchitecturefastapisveltekitpostgresqlreact-native

Para la sesion 100, Deblo.ai habia crecido de una demo de chat de una sola pagina a una plataforma educativa completa con 24+ tablas de base de datos, 18 modulos de rutas API, 60+ componentes frontend, una app movil React Native, streaming SSE con 20+ tipos de eventos, tareas de generacion en segundo plano, llamadas de voz, y un sistema de pagos que abarca seis paises. Asi es como se ve esa arquitectura desde dentro.

El backend: FastAPI hasta el fondo

Elegimos FastAPI por una razon: asincronia. Una plataforma de educacion IA es fundamentalmente un sistema limitado por E/S. Cada solicitud de chat involucra al menos una llamada HTTP a un proveedor de LLM, a menudo seguida de ejecuciones de herramientas que cada una involucra sus propias llamadas de red.

La estructura de la aplicacion es deliberadamente plana. Sin clases base abstractas. Sin framework de inyeccion de dependencias. Sin "arquitectura limpia" hexagonal de puertos y adaptadores. Cada archivo de ruta importa directamente los servicios que necesita.

La base de datos: 24 tablas, una columna JSONB que importa

La columna messages en Conversation es JSONB. Cada mensaje en una conversacion vive en un solo array JSON en la fila de la conversacion. Sin tabla messages. Sin joins. Esta fue una compensacion deliberada optimizada para el patron de acceso mas comun: cargar el historial completo de la conversacion para enviarlo al LLM como contexto.

El frontend: SvelteKit 2 + Runes Svelte 5

60+ componentes organizados por funcionalidad: chat, layout, creditos, admin, auth. Gestion de estado con stores writables de Svelte con persistencia localStorage.

El protocolo SSE: 20+ tipos de eventos

content, reasoning, tool_start, tool_progress, tool_end, quiz, true_false_quiz, file, credits, bonus_credits, error, done, annotations, draft_email, exercise_result, notification.

La app movil: Monorepo Expo React Native

Paquetes compartidos: @deblo/api, @deblo/stores (Zustand), @deblo/streaming (parseo SSE), @deblo/i18n.

Docker Compose: cuatro servicios

Frontend, backend, PostgreSQL (pgvector/pgvector:pg17), Redis.

La capa de servicios: 40+ modulos

llm.py, tool_executor.py, tools.py, credits.py, background_generation.py, file_generator.py, web_tools.py, sandbox.py, quiz.py, memory.py, payment.py, payment_poller.py, y mas.

El triple de autenticacion

WhatsApp OTP, Google OAuth, codigos de acceso -- tres caminos que convergen en el mismo modelo User y formato JWT.


Esta es la Parte 2 de una serie de 12 partes sobre la construccion de Deblo.ai.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

El prompt decía que lo anunciara. El modelo no lo hizo. Así que lo hizo el worker: cerrar un silencio de 15 segundos en Déblo Voice

Déblo Voice se quedaba en silencio unos 15 segundos cada vez que una pregunta difícil activaba una búsqueda profunda. El prompt ya exigía un anuncio, pero el modelo de audio nativo emite la llamada a la función como su primer token. Además, el silencio tenía dos partes, la ejecución de la herramienta y la latencia de la respuesta, así que ningún prompt podía cerrarlo. Llevamos la garantía al worker de LiveKit: un anuncio pregrabado con la voz y el idioma de la sesión, y un suave sonido de tecleo mientras el agente piensa. Probado en producción el 16 de octubre de 2026: 14 y 17,5 segundos de silencio del lado del modelo, unos 0,4 segundos percibidos por el usuario.

13 min Oct 16, 2026
deblodeblo-voicevoice-aigemini-live +17
Thales & Claude zerosuite

El servidor que no dimos de baja: vaciar una máquina de producción en una noche, y cada número que comprobamos

Una noche, seis aplicaciones migradas fila por fila, tres copias de seguridad vacías, una sin destino y un servidor cuyo futuro cambió tres veces.

19 min Oct 2, 2026
caspclaude-codeclaude-opus-5.5infrastructure +10
Thales & Claude zerosuite

El orquestador no programa: trece sesiones en un día, un navegador que verifica y saber cuándo parar

Un día, una plataforma privada de un cliente, trece sesiones headless de Claude encadenadas por un orquestador que nunca escribe código. Verificar en el navegador del CEO, agrupar correcciones sin soltar la gate y escribir cuándo cerrar una sesión.

19 min Sep 30, 2026
caspclaude-codeclaude-opus-5.5multi-session +12