Architecture
Documentation technique de l'architecture de Duckling.
Vue d'ensemble
Duckling is a full-stack web application with a clear separation between frontend et backend:
graph LR
A[Navigateur] --> B[Frontend React]
B --> C[Backend Flask]
C --> D[Moteur Docling]
D --> E[(Stockage)]
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 Sections
-
Vue d'ensemble du système
Architecture de haut niveau et flux de données
-
Composants
Détails des composants frontend et backend
-
Diagrammes
Diagrammes d'architecture et organigrammes
Décisions de conception clés
Séparation des préoccupations
- Frontend: React avec TypeScript pour la sécurité des types et une UI moderne
- Backend: Flask pour la simplicité et l'accès à l'écosystème Python
- Moteur: Docling pour la conversion de documents (bibliothèque IBM)
Async Traitement
Document conversion is hetled asynchronously:
- Client uploads file
- Server returns job ID immediately
- Client polls for status
- Server processes in background thread
- Results available when complete
Job Queue
A thread-based job queue prevents memory exhaustion:
- Maximum 2 concurrent conversions
- Jobs queued when capacity reached
- Automatic cleanup of completed jobs
Paramètres Persistence
Paramètres are stored per-user session et applied per-conversion:
- Global defaults in
config.py - User settings stored in database (per session ID)
- Per-request overrides via API
Paramètres are isolated per user session, ensuring multi-user deployments don't interfere with each other's preferences.
Technology Stack
Frontend
| Technology | Objectif |
|---|---|
| React 18 | UI framework |
| TypeScript | Type safety |
| Tailwind CSS | Styling |
| Framer Motion | Animations |
| Axios | HTTP client |
| Vite | Build tool |
Backend
| Technology | Objectif |
|---|---|
| Flask | Web framework |
| SQLAlchemy | Database ORM |
| SQLite | History storage |
| Docling | Document conversion |
| Threading | Async processing |