Shipping React Server Components to prod
What broke, what got faster, and the caching bug that cost us a weekend.
Write blog posts, capture ideas, compress images, and publish to every site you run — from one desktop app. Mditoor edits the plain .md and .mdx files in your repos, with a frontmatter editor and git built in.
~/code/my-site/content/posts
Shipping React Server Components to prod
What broke, what got faster, and the caching bug that cost us a weekend.
Rust traits for TypeScript developers
Interfaces, generics and the borrow checker, mapped to things you already know.
Postgres indexes I actually use
Partial, covering and BRIN indexes with real query plans from a side project.
Self-hosting web fonts the right way
Subsetting, preload, and font-display without the layout shift.
مقدمة إلى Docker للمطورين
شرح عملي للحاويات من الصفر.
A 40-line GitHub Actions cache that works
Stop reinstalling node_modules on every push.
Benchmarks: Bun vs Node for CLI tools
My dotfiles, explained
zsh, tmux, neovim config tour
Feature flags without a vendor
Debugging memory leaks in Node
heap snapshots, the event listener one
SQLite is enough
Rust traits for TypeScript developers
Optimize on import
Applied to every new image
post: Rust traits for TypeScript devs
Mditoor sits on top of the repos you already have. Think of it as a local, git-based CMS for your static site — no hosted backend, no database, no lock-in.
Browse every blog post as a gallery or list, see drafts at a glance, and write in a block editor or raw Markdown. Frontmatter becomes a real form with dates, selects, tags and image pickers — no hand-editing YAML.
If you've used implements in TypeScript, you already know half of this.
وتكتب بالعربية في نفس المقال، والاتجاه يُضبط تلقائياً.
Capture blog post ideas the moment they show up, move them from Inbox to Up next, and turn any idea into a draft post with one click. Ideas live in your repo next to the posts.
.mditoor-ideas.json, versioned with gitBenchmarks: Bun vs Node for CLI tools
My dotfiles, explained
zsh, tmux, neovim config tour
Debugging memory leaks in Node
heap snapshots, the event listener one
SQLite is enough
Drag a screenshot in and Mditoor resizes, compresses and sharpens it on import, so your blog stays fast. The asset gallery shows every image in the workspace and flags the ones no post uses anymore.
Optimize on import
Applied to every new image
Add a workspace per repo — your personal blog, the docs site, the company blog — and switch between them instantly. Each one picks where its images go: next to the post, a public/ folder, or any S3-compatible bucket.
https://cdn.example.com/blog/rust-traits/cover.webp
Status, diffs, stage, commit, pull and push without leaving the post.
Ctrl K to jump to any post, workspace or action.
Direction is detected per block, so Arabic and English mix cleanly in one post.
English, Arabic and French, with a full right-to-left layout.
Title length, description, headings and links checked before you ship.
Imports and JSX components stay intact. Your files are never rewritten behind your back.
No account, no telemetry, no cloud sync. Only the git and uploads you trigger.
Built with Tauri and Rust. A ~4 MB installer that starts instantly.
Point Mditoor at your static site's repo and it detects the framework, finds the posts folder, and picks sensible defaults. Everything can be changed later.
| Preset | Post file | Frontmatter | Images |
|---|---|---|---|
| Next.js | <slug>/index.mdx | YAML | public/images |
| Astro | <slug>.md | YAML | next to the post |
| Hugo | <slug>/index.md | TOML | next to the post |
| Jekyll | YYYY-MM-DD-<slug>.md | YAML | assets/images |
| Docusaurus | <slug>/index.md | YAML | next to the post |
| Eleventy | <slug>.md | YAML | next to the post |
| Nuxt Content | <slug>.md | YAML | public/images |
| Generic | <slug>/index.mdx | YAML | next to the post |
Using another framework, or storing posts in a different folder structure? The Generic preset lets you set the folder, file name and frontmatter format yourself — or request a preset.
Yes. Mditoor is free and open source under the MIT license. There is no account, subscription or telemetry.
Yes. Mditoor is a Markdown and MDX editor. It opens .md and .mdx files in place, keeps imports and JSX components intact, and edits frontmatter as a form.
Mditoor has presets for Next.js, Astro, Hugo, Jekyll, Docusaurus, Eleventy and Nuxt Content, plus a generic preset for any static site that stores posts as Markdown or MDX files.
Mditoor works like a local, git-based CMS for static sites. Your posts stay as plain Markdown files in your repository and you publish by committing and pushing from the app.
Yes. Images are resized, compressed and optionally sharpened when you add them, and the asset gallery shows unused images so you can clean them up.
Yes. Mditoor is a local-first desktop app. It only uses the network for git operations and image uploads that you trigger.
A Windows installer is available now. On macOS and Linux you can build Mditoor from source; packaged builds are planned.
Free and open source. Windows installer available now; macOS and Linux build from source.