Markdown / PRD.md
GauthierDemonchy
Premier commit propre
898ed62
|
Raw
History Blame Contribute Delete
8.24 kB

PRD — MarkitDown Local WebApp

Version : 1.0
Date : 11 mai 2026
Statut : Finalisé


1. Contexte & Objectif

Problème

Convertir des fichiers (PDF, Word, Excel, PowerPoint, images, HTML…) en Markdown est une tâche fréquente mais fastidieuse en ligne de commande. La librairie MarkItDown de Microsoft résout la conversion, mais elle reste inaccessible sans interface.

Objectif

Créer une application web locale minimaliste, lancée en un double-clic sur un fichier .bat (Windows) ou .sh (Mac/Linux), qui expose MarkItDown dans un navigateur sans aucune étape de build préalable.


2. Utilisateurs cibles

  • Développeurs, tech writers, data analysts souhaitant convertir rapidement des fichiers locaux
  • Utilisateurs non-techniques voulant un outil simple sans setup complexe
  • Profil principal : utilisateur unique en local (pas de multi-tenant)

3. Périmètre fonctionnel

3.1 Fonctionnalités — Must Have 🔴

ID Fonctionnalité Description
F1 Upload de fichier Drag & drop + bouton "Parcourir". Un ou plusieurs fichiers à la fois
F2 Conversion Markdown Via MarkItDown — tous les formats supportés (PDF, DOCX, PPTX, XLSX, images, HTML, CSV, JSON, ZIP…)
F3 Prévisualisation Affichage du Markdown rendu (HTML) et du Markdown brut (code) en onglets
F4 Téléchargement .md Bouton "Télécharger" → génère un fichier .md nommé d'après le fichier source
F5 Copie presse-papier Bouton "Copier" → copie le Markdown brut dans le clipboard
F6 Lancement 1 clic Fichier start.bat (Windows) et start.sh (Mac/Linux) qui installent les dépendances si absent et lancent l'app

3.2 Fonctionnalités — Should Have 🟠

ID Fonctionnalité Description
F7 Historique local Liste des dernières conversions (nom fichier, date, taille MD) persistée dans un fichier JSON local
F8 Re-téléchargement Depuis l'historique, re-télécharger ou re-copier un résultat précédent
F9 Batch conversion Convertir plusieurs fichiers en une fois, télécharger un .zip des .md résultants

3.3 Fonctionnalités — Nice to Have 🟡

ID Fonctionnalité Description
F10 Conversion URL Saisir une URL à la place d'un fichier — MarkItDown supporte le scraping HTML
F11 Effacer historique Bouton pour vider l'historique

4. Architecture technique

Stack

  • Backend : Python + Flask (léger, zéro config, idéal pour usage local)
  • Frontend : HTML/CSS/JS vanilla — pas de framework, pas de build step
  • Conversion : markitdown (pip)
  • Persistance : fichier history.json local dans le dossier de l'app

Structure du projet

markitdown-app/
├── start.bat              ← Lancement Windows (double-clic)
├── start.sh               ← Lancement Mac/Linux
├── app.py                 ← Serveur Flask
├── requirements.txt       ← markitdown, flask
├── history.json           ← Historique (créé auto au premier lancement)
├── static/
│   ├── style.css
│   └── script.js
└── templates/
    └── index.html

Logique du launcher (start.bat)

1. Vérifie si Python est installé → sinon, message d'erreur clair
2. Vérifie si le venv existe → sinon, le crée et installe requirements.txt
3. Active le venv
4. Lance app.py (Flask sur http://localhost:5000)
5. Ouvre automatiquement le navigateur sur http://localhost:5000

5. Interface utilisateur

Principes

  • Simple, minimaliste, sobre — aucun framework CSS externe
  • Palette monochrome (blanc/gris) + une couleur d'accent (violet ou indigo)
  • Responsive (fonctionne de 800px à 1400px)
  • Pas de dark mode (hors scope v1)

Layout

┌─────────────────────────────────────────────────┐
│  MarkitDown  [historique]                        │
├─────────────────────────────────────────────────┤
│                                                  │
│   ┌────────────────────────────────────────┐    │
│   │   Glissez un fichier ici               │    │
│   │   ou cliquez pour parcourir            │    │
│   └────────────────────────────────────────┘    │
│                                                  │
│   [Rendu]  [Markdown brut]                       │
│   ┌────────────────────────────────────────┐    │
│   │  (prévisualisation du résultat)        │    │
│   └────────────────────────────────────────┘    │
│                                                  │
│   [⬇ Télécharger .md]   [⎘ Copier]             │
│                                                  │
├─────────────────────────────────────────────────┤
│  Historique    nom_fichier.pdf  12/05  [↓] [⎘]  │
│               autre_fichier.docx 11/05 [↓] [⎘]  │
└─────────────────────────────────────────────────┘

6. Formats supportés

Tous les formats pris en charge par MarkItDown :

Catégorie Formats
Documents Office .docx, .pptx, .xlsx
PDF .pdf
Images .jpg, .jpeg, .png, .gif, .webp, .bmp
Web .html, .htm
Données .csv, .json, .xml
Archives .zip (extrait et convertit le contenu)
Texte .txt, .md, .rst
Code tous types de fichiers texte
Audio .mp3, .wav (transcription via MarkItDown si ffmpeg disponible)

7. Gestion des erreurs

Cas Comportement attendu
Format non supporté Message d'erreur inline dans l'UI : "Format non supporté par MarkItDown"
Fichier corrompu Message d'erreur avec détail de l'exception Python
Python non installé Le .bat affiche une fenêtre CMD avec instruction d'installation
Port 5000 occupé Flask essaie le port 5001, puis 5002 — affiche le port utilisé
Fichier trop lourd (>50 Mo) Warning dans l'UI, conversion lancée quand même

8. Contraintes & non-objectifs

  • ❌ Pas de déploiement cloud (100% local)
  • ❌ Pas d'authentification (usage solo)
  • ❌ Pas de dark mode en v1
  • ❌ Pas d'installeur .exe (le .bat suffit)
  • ✅ Fonctionne offline (zéro appel réseau une fois les dépendances installées)
  • ✅ Python 3.9+ requis (documenté dans le README)

9. Livrables

Livrable Description
start.bat + start.sh Launchers prêts à l'emploi
app.py Backend Flask complet
index.html + style.css + script.js Frontend complet
requirements.txt flask, markitdown
README.md Instructions : prérequis Python, comment lancer, formats supportés

10. Critères d'acceptation

  • Double-clic sur start.bat → navigateur s'ouvre sur l'app en moins de 15 secondes (premier lancement)
  • Double-clic sur start.bat → app lance en moins de 3 secondes (lancements suivants)
  • Upload d'un PDF → Markdown correct affiché en moins de 10 secondes
  • Bouton "Télécharger" → fichier .md téléchargé avec le bon nom
  • Bouton "Copier" → contenu dans le clipboard
  • La conversion est visible dans l'historique après chaque succès
  • L'historique persiste après fermeture et réouverture de l'app