A modern, clean Dockerized web app that converts Office documents, PDFs, web pages and YouTube links into Markdown — powered by a PHP frontend and a Python (FastAPI) backend running MarkItDown.
- Repository: relooplab/markdown_app
- This project is a fork of office_to_markdown_app.
- Drag & drop upload for Word, Excel, PowerPoint, PDF, HTML, CSV, JSON, XML, ZIP, EPUB and more
- Convert YouTube URLs to Markdown (transcripts)
- Split-view converter: inputs on the left, live result on the right
- Rendered or Source preview with one-click Copy and Download .md
- Output metrics: characters, words, lines, size
- Modern responsive UI with light & dark mode
Browser ──▶ Nginx (proxy)
├── / → PHP-FPM → index.php (HTML/CSS/JS UI)
└── /api/* → FastAPI (Python) → markitdown
| Service | Stack | Port |
|---|---|---|
| nginx | nginx:1.27-alpine | 8080 |
| frontend | php:8.3-fpm-alpine | (internal 9000) |
| backend | python:3.11 + FastAPI | (internal 8000) |
-
Build and start all services:
docker compose up -d --build
-
Open your browser at http://localhost:8080
-
Override the host port if needed:
PORT=9000 docker compose up -d --build # → http://localhost:9000
Stop with docker compose down. Rebuild backend after changes with docker compose up -d --build backend.
- Frontend: PHP 8.3, vanilla JS, custom CSS (light & dark themes), marked.js for preview rendering
- Backend: Python 3.11, FastAPI, MarkItDown
- Orchestration: Docker Compose + Nginx reverse proxy
markdown_app/
├── docker-compose.yml
├── .dockerignore
├── frontend/
│ ├── nginx.conf # routes .php → frontend, /api/* → backend
│ └── www/
│ ├── index.php # homepage + converter UI
│ ├── style.css
│ ├── app.js
│ └── logo.svg
└── backend/
├── Dockerfile
├── requirements.txt
└── main.py # FastAPI: /api/convert, /api/convert-url
GET /api/health— liveness probePOST /api/convert— multipart upload (file) →{ markdown, file_name, characters, words, lines, size }POST /api/convert-url— JSON{ "url": "https://youtube.com/..." }→ same shape
Project repository: relooplab/markdown_app — a fork of office_to_markdown_app.