Plateforme web pour traducteurs agréés permettant de créer, gérer et certifier des documents traduits avec système de vérification par QR code.
- Authentification Sécurisée: Connexion via Replit Auth (Google, GitHub, Email)
- Profil Professionnel: Gestion du profil avec logo, qualifications, coordonnées
- Éditeur de Traduction: Éditeur de texte riche avec mise en forme (Quill.js)
- En-têtes et Pieds de Page Automatiques: Génération automatique des éléments officiels
- QR Code: Génération automatique d'un QR code pour chaque document
- Code Unique: Attribution d'un code unique par document (format: TRAD-YYYYMMDD-XXXXX)
- Tableau de Bord: Vue d'ensemble des documents et statistiques
- Annuaire des Traducteurs: Recherche et consultation des traducteurs certifiés
- Vérification de Documents: Système de vérification par code unique ou QR code
- Page de Certification: Affichage public des métadonnées du document
/
├── app.py # Configuration Flask et base de données
├── main.py # Point d'entrée de l'application
├── replit_auth.py # Authentification Replit Auth
├── models.py # Modèles de base de données
├── routes/ # Routes organisées par fonctionnalité
│ ├── public.py # Routes publiques (landing, annuaire, vérification)
│ ├── profile.py # Gestion du profil traducteur
│ └── documents.py # Gestion des documents
├── utils/ # Utilitaires
│ ├── qr_generator.py # Génération de QR codes
│ ├── code_generator.py # Génération de codes uniques
│ └── file_handler.py # Gestion des uploads
├── templates/ # Templates HTML Jinja2
├── static/ # Fichiers statiques
│ ├── css/
│ ├── js/
│ ├── uploads/ # Documents originaux uploadés
│ ├── logos/ # Logos des traducteurs
│ └── qrcodes/ # QR codes générés
└── docs/ # Documentation
- Informations de base de l'utilisateur (Replit Auth)
- Relations: TranslatorProfile, Documents
- business_name: Nom de l'activité
- subtitle: Sous-titre
- qualification: Qualification officielle
- logo_filename: Fichier du logo
- address: Adresse complète
- phone, website: Coordonnées
- is_verified: Statut de vérification
- is_public: Visibilité dans l'annuaire
- unique_code: Code unique (TRAD-YYYYMMDD-XXXXX)
- title: Titre du document
- source_language, target_language: Langues
- content: Contenu HTML de la traduction
- word_count: Nombre de mots
- status: draft | completed
- qr_code_filename: Fichier QR code
- original_document_filename: Scan du document original
┌─────────────────────────────────────────────────┐
│ [Nom Activité] [LOGO] [QR CODE] │
│ [Sous-titre] [Code Unique] │
│ [Qualification] │
└─────────────────────────────────────────────────┘
[Adresse]
[Tél] | [Email] | [Site Web]
Ce document a été traduit via la plateforme "Traduction Pro"
le [Date et Heure] et peut être vérifié avec le code unique [Code].
Backend:
- Flask
- PostgreSQL (via Replit)
- SQLAlchemy
- Replit Auth (OAuth)
Frontend:
- HTML5
- Tailwind CSS
- JavaScript Vanilla
- Quill.js (éditeur de texte)
- Feather Icons
Bibliothèques:
- qrcode: Génération de QR codes
- Pillow: Traitement d'images
- Flask-Login: Gestion des sessions
- Flask-Dance: OAuth2
Les dépendances sont gérées automatiquement via pyproject.toml:
- Flask et extensions
- PostgreSQL drivers
- QR code et image processing
- OAuth libraries
Automatiquement configurées par Replit:
DATABASE_URL: URL de la base de données PostgreSQLSESSION_SECRET: Clé secrète pour les sessionsREPL_ID: ID du Repl (pour OAuth)PGHOST,PGPORT,PGDATABASE,PGUSER,PGPASSWORD: PostgreSQL
- Inscription Traducteur: Se connecter et créer un profil professionnel
- Créer un Document: Remplir les métadonnées et uploader le scan
- Traduire: Utiliser l'éditeur pour saisir la traduction
- Finaliser: Marquer comme terminé pour générer le QR code
- Partager: Le code unique permet la vérification publique
Les documents peuvent être vérifiés de deux façons:
- Scan QR Code: Scanner le QR présent sur le document
- Saisie Manuelle: Entrer le code unique sur
/verify
- Authentification OAuth sécurisée via Replit
- Tokens JWT pour les sessions
- Upload de fichiers sécurisé avec validation
- Protection CSRF
- Sessions persistantes avec base de données
Pour toute question ou problème, contactez l'administrateur de la plateforme.