# Markdown Studio A self-contained web app for working with markdown files: upload a `.md` file (or start blank), edit it with live syntax highlighting, see a rendered preview, and export the result as **PDF**, **standalone HTML**, or **Markdown**. Built with React + Vite + Tailwind CSS and [Untitled UI React](https://www.untitledui.com/react) components. No backend — everything runs in the browser, and your document auto-saves to localStorage. ## Features - **Upload** — drag & drop or browse for `.md` / `.markdown` / `.txt` files (drop works anywhere in the app) - **Edit** — CodeMirror editor with markdown + fenced-code syntax highlighting - **Preview** — GitHub-flavored markdown (tables, task lists, strikethrough) with highlighted code blocks - **Layouts** — editor only, side-by-side split (draggable divider), or preview only - **Export** — Markdown download (`⌘S` / `Ctrl+S`), self-contained HTML file, or PDF via the browser's print dialog - **Extras** — light/dark theme, autosave to localStorage, unsaved-changes indicator ## Development ```sh pnpm install pnpm dev # http://localhost:5173 pnpm build # typecheck + production build into dist/ ``` ## Docker ```sh docker compose up --build # → http://localhost:8080 ``` Or without compose: ```sh docker build -t markdown-studio . docker run -p 8080:80 markdown-studio ``` The image is a multi-stage build: Node builds the static bundle, nginx serves it (SPA fallback + gzip + long-lived caching for hashed assets). ## SEO The app ships with full on-page SEO: keyword-rich title/description, canonical URL, Open Graph + Twitter cards with a branded share image (`public/og-image.png`), JSON-LD `WebApplication` structured data, favicons + web manifest, `robots.txt`, and a `