Admin panel
The admin panel is the editing interface included with an EmDash site. It is served by the Astro
application at /_emdash/admin/ and uses the same database, media storage, content model, and
plugins as the public pages.
The first visit to a new site’s admin route opens the setup wizard. After setup, a signed-in user’s permissions determine which content and administration tools are available.
Work areas
Section titled “Work areas”The navigation adapts to the site’s collections and installed plugins. These are the main areas an editor or administrator may see:
| Area | What it is for |
|---|---|
| Dashboard | A starting view with site and plugin widgets |
| Collection names, such as Posts | List, create, edit, publish, and move entries to the trash |
| Collection groups | Collapsible folders that hold collections sharing a group, plus taxonomies assigned only to collections in that folder |
| Media | Upload, search, inspect, replace, and delete files |
| Taxonomies and Bylines | Organize content and manage credited authors |
| Menus and Widget Areas | Manage navigation and editor-controlled regions rendered by the site |
| Comments | Review and moderate comments when a collection enables them |
| Content Types | Create collections and fields and change their settings |
| Plugins | Install, configure, and open plugin-provided pages |
| Settings | Configure the site, authentication, backups, email, search, and other services |
This interface manages data and configuration. Astro pages and components still define the public layout. Adding a menu item or widget in the admin only changes the public site when an Astro component queries and renders that menu or widget area.
Content editor
Section titled “Content editor”The content editor builds its form from the selected collection. A short-text field becomes a text
input, a portableText field becomes the rich-text editor, a media field opens the media picker,
and a reference field lets the editor select another entry. Collection settings add publishing,
preview, revision, comment, and search controls where applicable.
The rich-text editor supports headings, lists, quotations, code, links, images, and registered custom blocks. If imported content contains a block that the editor cannot display, EmDash preserves the stored block rather than removing it during the next save.
Saving and publishing are separate states for collections with drafts. Save stores the current work as a draft. Publish or Publish changes makes that saved version available to public queries. Scheduling records when a draft or pending change should become public.
When edit locking is enabled for a collection, opening an entry holds a lock for that editor. Other writers are refused while the lock is active instead of silently overwriting the entry. If an entry changes after an editor loads it, EmDash also refuses the stale save so the editor can reload the newer version instead of overwriting it.
Roles and permissions
Section titled “Roles and permissions”EmDash includes five roles: Subscriber, Contributor, Author, Editor, and Admin. Permissions build as the role level increases, but ownership still matters for content and media actions. For example, Authors can edit and publish their own entries, while Editors can do so for any entry.
Administrative areas have separate permission checks:
- Editors can manage taxonomies, menus, bylines, widgets, sections, and content from other authors.
- Admins can change the content model, users, plugins, redirects, backups, and settings, and can permanently delete trashed content.
- The server checks permissions for each action. Hiding a navigation item is not the security boundary.
Read Authentication and user roles for account setup and the complete role descriptions.
The media library can show files in a grid or list, search and filter them, display metadata, and perform multi-item actions. Upload behavior depends on the configured storage adapter. When the adapter supports signed uploads, the browser sends the file to storage using a short-lived signed URL and then confirms the completed upload with EmDash.
Deleting a media item can affect entries that refer to it. Use the media usage information and replacement tools before removing an asset used on public pages. See Media library for the upload, replacement, and deletion workflows.
Plugin interfaces
Section titled “Plugin interfaces”Plugins can add dashboard widgets, settings sections, editor controls, or complete admin pages. A plugin page is mounted under that plugin’s own admin route; it cannot replace a core admin screen. The plugin still needs server-side permission checks for any protected action, even when the admin link is shown only to a particular role.
Read Installing plugins to add an extension. Site developers building an interface should use the native plugin admin APIs rather than modifying the core admin application.
Configuration requirements
Section titled “Configuration requirements”The admin is a React application, so the Astro project must install @astrojs/react, react, and
react-dom and register react() in astro.config.mjs. The site also needs server output, a
database, and media storage. Add EmDash to an existing Astro project shows the
complete local configuration.