A reimagined WordPress admin experience. Fast, focused and beautiful.
Minn Admin serves a modern, minimal dashboard at /minn-admin/ on your WordPress site. It's a
single-page app built on the WordPress REST API with no React, no build step, and one
vanilla-JS file. It lives alongside the classic wp-admin, which stays fully available.
- Overview — stat cards, a real Traffic chart with hover details when an analytics plugin is installed (Koko Analytics, WP Statistics, Burst, Independent Analytics, AnalyticsWP), and a recent-activity feed
- Content — posts, pages and custom post types sorted by publish date (scheduled posts lead with their go-out dates), with search, category/tag filters, status pills, bulk actions (set status or trash, with shift-click range select), and row actions: right-click or hover for quick publish/draft/trash, view, and a block-editor escape
- Media — grid/list library, uploads, drag-and-drop, a preview overlay with arrow-key navigation and in-place title & alt text editing, a right-click menu, and a built-in image editor: rotate and crop, saved as a new copy with originals untouched
- Comments — full moderation (pending / approved / spam / trash) with inline replies and a right-click menu for the same verbs
- Orders — WooCommerce orders with summary cards, line-item detail and status changes (when WooCommerce is active)
- Users — directory with search, a role filter, create/edit users, roles, passwords, and per-user login sessions with one-click sign-out
- AI Access — generate revocable application passwords for AI agents plus a site-tailored agent guide (markdown REST reference) to hand to a coding agent; configuration work stays out of Minn by design
- Extensions — install plugins and themes from WordPress.org or zip upload, activate, deactivate, delete, per-item and bulk updates, a Themes tab with screenshots, and cards wearing real wp.org icons (linked to the directory) with linked author lines
- Post Types & Taxonomies — see every registered post type and taxonomy and manage definitions through whoever owns them: ACF, Custom Post Type UI, or Minn's own store when neither is active; code-registered ones shown read-only
- Settings — General (with timezone picker), Writing, Reading, Discussion and Permalinks (structure presets + custom, with automatic rewrite flushing), plus built-in maintenance mode
- Editor — a calm, block-aware writing surface that stores native Gutenberg markup
(zero lock-in: open any post in the block editor, any time). Markdown typing conventions
(
**bold**,`code`,## headings, lists, quotes, fences, dividers…), a link popover on ⌘K, text alignment, table & image controls in island-style cutouts, complex blocks preserved byte-for-byte as configurable islands rendered with the site's real front-end styles, slash commands with type-to-filter, syntax-highlighted code blocks, word count · reading time, scheduling and one-click publish. Paste cleanup turns Word / Google Docs / web HTML into the safe subset; paste or drag an image and it uploads to the library at the caret with an inline caption. The publish sidebar edits the slug, visibility (public / password / private), per-post discussion and sticky. Deleting an embed or a table row offers an Undo toast. Revision diffs open a side-by-side, word-marked diff of any revision against the current content. An outline panel lists headings as a clickable, live-updating table of contents; focus mode (⌘⇧D) fades all but the current paragraph with typewriter scroll; outline mode (⌘⇧O) leaves just the writing and the outline. The internal link picker searches your own posts from the link popover, and a themed date-time picker handles scheduling. ⌘⏎ publishes; the help dialog documents every shortcut. Where this is heading: the editor roadmap - Never lose work — post locking on WordPress's own
_edit_lock(Minn, the classic editor and Gutenberg all honor each other, with takeover), plus a localStorage crash net that snapshots every edit within ~1.2s (before the first autosave) and offers recovery on the next open. Status-aware autosave: drafts save in place, published posts back up to revisions (only Update goes live), with a backup-restore banner. - Page builders — build a page with Divi, Elementor, Brizy, Beaver Builder, Etch, Bricks
or WPBakery and keep managing it from Minn: builder-owned pages are marked, edited through
the builder's own chrome-free surface via Edit in ⟨builder⟩ (no wp-admin screen), and
fenced so a stray Minn edit can't break the builder's canvas. + New can start a page in any
active builder. Third parties register via the
minn_admin_page_buildersfilter - System — a developer diagnostics page: a health strip over WordPress / PHP / database
(largest tables, an autoloaded-options breakdown with top offenders, expired-transient
bloat, cron health) / server facts, an installed extensions manifest (plugins,
must-use, themes with versions), live debug toggles that safely rewrite
wp-config.php, a clickable debug-log viewer, and one-click Copy report as markdown - SEO panel — Yoast SEO / Rank Math title, meta description and focus keyword in the editor sidebar
- Command palette — ⌘K / Ctrl-K everywhere
- Plugin surfaces — bundled adapters for Gravity Forms (readable entries with real field labels + a Forms view with activate/deactivate), Gravity SMTP (email log with a real HTML preview and resend), Simple History, WP Activity Log, Activity Log (Aryo) and Stream (audit logs), Redirection, Safe Redirect Manager and Simple 301 Redirects (redirects: list, search, create, edit and delete), ACF (editor panels) and Yoast / Rank Math (SEO panel), plus one-filter APIs for any plugin to register views, editor panels, traffic data or block-inspector forms
- Dark & light themes, bundled fonts, zero external requests from the app, responsive down to phones
- Download or clone into
wp-content/plugins/minn-admin. - Activate through the Plugins screen.
- Visit
/minn-admin/. It's also linked from the admin bar and the wp-admin menu.
Pretty permalinks recommended (clean routes like /minn-admin/content); without them the app
falls back to /?minn_admin=1 with hash routing. Updates are delivered through the normal
WordPress updates UI via GitHub Releases.
Any plugin can add a view to Minn with one filter: a declarative descriptor, no JavaScript required. See docs/for-plugin-authors.md, and docs/extension-api.md for the design rationale.
- Project goals
- Editor direction
- Editor roadmap
- Block inspector (design, v0.4.0)
- For plugin authors
- Changelog
Edit and go. There's no build step. Lint with node --check assets/js/app.js and
php -l minn-admin.php. Commit messages follow Emoji-Log.
