Web Analytics Made Easy - Statcounter
Skip to content

Arquitectura

Documentaci贸n t茅cnica de la arquitectura de Duckling.

Visi贸n General

Duckling es una aplicaci贸n web full-stack con una clara separaci贸n entre frontend y backend:

graph LR
    A[Navegador] --> B[Frontend React]
    B --> C[Backend Flask]
    C --> D[Motor Docling]
    D --> E[(Almacenamiento)]

    style A fill:#3b82f6,color:#fff
    style B fill:#1e3a5f,color:#fff
    style C fill:#14b8a6,color:#fff
    style D fill:#8b5cf6,color:#fff
    style E fill:#f59e0b,color:#fff

Secciones

  • Vista General del Sistema


    Arquitectura de alto nivel y flujo de datos

    Vista General

  • Componentes


    Detalles de componentes frontend y backend

    Componentes

  • Diagramas


    Diagramas de arquitectura y diagramas de flujo

    Diagramas

Decisiones de Dise帽o Clave

Separaci贸n de Responsabilidades

  • Frontend: React con TypeScript para seguridad de tipos e interfaz moderna
  • Backend: Flask por simplicidad y acceso al ecosistema Python
  • Motor: Docling para conversi贸n de documentos (biblioteca de IBM)

Procesamiento As铆ncrono

La conversi贸n de documentos se maneja de forma as铆ncrona:

  1. El cliente sube el archivo
  2. El servidor devuelve un ID de trabajo inmediatamente
  3. El cliente consulta el estado
  4. El servidor procesa en un hilo en segundo plano
  5. Los resultados est谩n disponibles cuando se completa

Cola de Trabajos

Una cola de trabajos basada en hilos previene el agotamiento de memoria:

  • M谩ximo 2 conversiones simult谩neas
  • Los trabajos se ponen en cola cuando se alcanza la capacidad
  • Limpieza autom谩tica de trabajos completados

Persistencia de Configuraci贸n

Los ajustes se almacenan por sesi贸n de usuario y se aplican por conversi贸n:

  • Valores predeterminados globales en config.py
  • Configuraci贸n de usuario almacenada en la base de datos (por ID de sesi贸n)
  • Anulaciones por solicitud a trav茅s de la API

Los ajustes est谩n aislados por sesi贸n de usuario, garantizando que los despliegues multi-usuario no interfieran con las preferencias de otros.

Stack Tecnol贸gico

Frontend

Tecnolog铆a Prop贸sito
React 18 Framework de UI
TypeScript Seguridad de tipos
Tailwind CSS Estilos
Framer Motion Animaciones
Axios Cliente HTTP
Vite Herramienta de construcci贸n

Backend

Tecnolog铆a Prop贸sito
Flask Framework web
SQLAlchemy ORM de base de datos
SQLite Almacenamiento de historial
Docling Conversi贸n de documentos
Threading Procesamiento as铆ncrono