Skip to content

Commit b989bb9

Browse files
authored
docs: rebuild the EmDash front door (#3045)
* docs: keep contributor guidance maintainable * docs: clarify architecture guide audience * docs: restore contributor context * docs: rebuild the EmDash front door
1 parent 9ed42d5 commit b989bb9

10 files changed

Lines changed: 674 additions & 1110 deletions

File tree

docs/astro.config.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import { defineConfig } from "astro/config";
66
// https://astro.build/config
77
export default defineConfig({
88
site: "https://docs.emdashcms.com",
9+
redirects: {
10+
"/introduction": "/why-emdash",
11+
},
912
integrations: [
1013
starlight({
1114
title: "EmDash",
@@ -34,7 +37,6 @@ export default defineConfig({
3437
{
3538
label: "Start Here",
3639
items: [
37-
{ label: "Introduction", slug: "introduction" },
3840
{ label: "Getting Started", slug: "getting-started" },
3941
{ label: "Add to an Existing Project", slug: "existing-project" },
4042
{ label: "Why EmDash?", slug: "why-emdash" },
Lines changed: 82 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,107 @@
11
---
2-
title: Admin Panel
3-
description: What the EmDash admin panel offers editors, administrators, and developers.
2+
title: Admin panel
3+
description: How editors, administrators, and developers use the EmDash admin panel.
44
---
55

6-
import { Aside, Card, CardGrid } from "@astrojs/starlight/components";
6+
import { Aside } from "@astrojs/starlight/components";
77

8-
The admin panel is the content management interface for your site. It is served at `/_emdash/admin/` inside your Astro site, and it adapts automatically to your collections, plugins, and the signed-in user's role. For how it is built, see [Architecture (internals)](/contributing/architecture/#admin-panel-internals).
8+
The admin panel is the editing interface included with an EmDash site. It is served by the Astro
9+
application at `/_emdash/admin/` and uses the same database, media storage, content model, and
10+
plugins as the public pages.
911

10-
## Screens
12+
The first visit to a new site's admin route opens the setup wizard. After setup, a signed-in user's
13+
permissions determine which content and administration tools are available.
1114

12-
| Path | Screen |
13-
| -------------------------- | ------------------------------- |
14-
| `/` | Dashboard |
15-
| `/content/:collection` | Content list |
16-
| `/content/:collection/:id` | Content editor |
17-
| `/content/:collection/new` | New entry |
18-
| `/media` | Media library |
19-
| `/content-types` | Schema builder (administrators) |
20-
| `/menus` | Navigation menus |
21-
| `/widgets` | Widget areas |
22-
| `/taxonomies` | Categories and tags |
23-
| `/settings` | Site settings |
24-
| `/plugins/:pluginId/*` | Plugin pages |
15+
## Work areas
2516

26-
Navigation is generated from your collections and installed plugins, so a schema or plugin change appears in the admin immediately.
17+
The navigation adapts to the site's collections and installed plugins. These are the main areas an
18+
editor or administrator may see:
2719

28-
## Roles
20+
| Area | What it is for |
21+
| --- | --- |
22+
| Dashboard | A starting view with site and plugin widgets |
23+
| Collection names, such as **Posts** | List, create, edit, publish, and move entries to the trash |
24+
| Media | Upload, search, inspect, replace, and delete files |
25+
| Taxonomies and Bylines | Organize content and manage credited authors |
26+
| Menus and Widget Areas | Manage navigation and editor-controlled regions rendered by the site |
27+
| Comments | Review and moderate comments when a collection enables them |
28+
| Content Types | Create collections and fields and change their settings |
29+
| Plugins | Install, configure, and open plugin-provided pages |
30+
| Settings | Configure the site, authentication, backups, email, search, and other services |
2931

30-
What a user sees depends on their role. EmDash has five roles, from least to most access: Subscriber, Contributor, Author, Editor, Admin. See [User roles](/guides/authentication/#user-roles) for the full definitions.
32+
This interface manages data and configuration. Astro pages and components still define the public
33+
layout. Adding a menu item or widget in the admin only changes the public site when an Astro
34+
component queries and renders that menu or widget area.
3135

32-
In the admin, lower roles see only the content they have permission to manage. The schema builder at `/content-types` and the settings screens are Admin-only. Type generation and the CLI are available to developers working on the project regardless of admin role.
36+
## Content editor
3337

34-
<Aside type="note">
35-
The admin requires a signed-in user. Login is a separate page that
36-
establishes a session; see [Authentication](/guides/authentication/).
38+
The content editor builds its form from the selected collection. A short-text field becomes a text
39+
input, a `portableText` field becomes the rich-text editor, a media field opens the media picker,
40+
and a reference field lets the editor select another entry. Collection settings add publishing,
41+
preview, revision, comment, and search controls where applicable.
42+
43+
The rich-text editor supports headings, lists, quotations, code, links, images, and registered
44+
custom blocks. If imported content contains a block that the editor cannot display, EmDash preserves
45+
the stored block rather than removing it during the next save.
46+
47+
Saving and publishing are separate states for collections with drafts. **Save** stores the current
48+
work as a draft. **Publish** or **Publish changes** makes that saved version available to public
49+
queries. Scheduling records when a draft or pending change should become public.
50+
51+
When edit locking is enabled for a collection, opening an entry holds a lock for that editor. Other
52+
writers are refused while the lock is active instead of silently overwriting the entry. If an entry
53+
changes after an editor loads it, EmDash also refuses the stale save so the editor can reload the
54+
newer version instead of overwriting it.
55+
56+
<Aside>
57+
Moving an entry to the trash is a reversible content action. Permanently deleting it from the
58+
trash is not. Deleting a field or collection under **Content Types** is also destructive because
59+
it removes stored columns or tables. See [Collections and fields](/concepts/collections/#changing-fields-later)
60+
before changing a live model.
3761
</Aside>
3862

39-
## Content editor
63+
## Roles and permissions
4064

41-
The content editor builds a form from a collection's fields. Each field type uses a matching input:
65+
EmDash includes five roles: Subscriber, Contributor, Author, Editor, and Admin. Permissions build as
66+
the role level increases, but ownership still matters for content and media actions. For example,
67+
Authors can edit and publish their own entries, while Editors can do so for any entry.
4268

43-
| Field type | Editor |
44-
| -------------- | ----------------- |
45-
| `string` | Text input |
46-
| `text` | Textarea |
47-
| `number` | Number input |
48-
| `boolean` | Toggle |
49-
| `datetime` | Date/time picker |
50-
| `select` | Dropdown |
51-
| `multiSelect` | Multi-select |
52-
| `portableText` | Rich text editor |
53-
| `image` | Media picker |
54-
| `reference` | Entry picker |
69+
Administrative areas have separate permission checks:
5570

56-
Rich text fields edit as formatted content — headings, lists, quotes, code, links, and images from the media library. Content from plugins or imports that the editor does not recognise is preserved untouched.
71+
- Editors can manage taxonomies, menus, bylines, widgets, sections, and content from other authors.
72+
- Admins can change the content model, users, plugins, redirects, backups, and settings, and can
73+
permanently delete trashed content.
74+
- The server checks permissions for each action. Hiding a navigation item is not the security
75+
boundary.
5776

58-
Lists are paginated and stay consistent even when content changes between pages.
77+
Read [Authentication and user roles](/guides/authentication/#user-roles) for account setup and the
78+
complete role descriptions.
5979

60-
## Media library
80+
## Media
6181

62-
The media library supports:
82+
The media library can show files in a grid or list, search and filter them, display metadata, and
83+
perform multi-item actions. Upload behavior depends on the configured storage adapter. When the
84+
adapter supports signed uploads, the browser sends the file to storage using a short-lived signed
85+
URL and then confirms the completed upload with EmDash.
6386

64-
- Grid and list views
65-
- Search and filter by type and date
66-
- Drag-and-drop upload
67-
- Image preview with metadata
68-
- Bulk selection and delete
87+
Deleting a media item can affect entries that refer to it. Use the media usage information and
88+
replacement tools before removing an asset used on public pages. See [Media library](/guides/media-library/)
89+
for the upload, replacement, and deletion workflows.
6990

70-
Uploads go directly from the browser to your storage backend, so large files are not limited by request size.
91+
## Plugin interfaces
7192

72-
## Plugin pages and widgets
93+
Plugins can add dashboard widgets, settings sections, editor controls, or complete admin pages. A
94+
plugin page is mounted under that plugin's own admin route; it cannot replace a core admin screen.
95+
The plugin still needs server-side permission checks for any protected action, even when the admin
96+
link is shown only to a particular role.
7397

74-
A plugin can add pages and dashboard widgets to the admin. Plugin pages appear under `/_emdash/admin/plugins/:pluginId/`, and a plugin can only mount under its own namespace — it cannot override core admin screens. See [installing plugins](/plugins/installing/).
98+
Read [Installing plugins](/plugins/installing/) to add an extension. Site developers building an
99+
interface should use the [native plugin admin APIs](/plugins/creating-native-plugins/react-admin/)
100+
rather than modifying the core admin application.
75101

76-
## Next steps
102+
## Configuration requirements
77103

78-
<CardGrid>
79-
<Card title="Getting Started" icon="rocket">
80-
[Set up your first EmDash site](/getting-started/).
81-
</Card>
82-
<Card title="REST API" icon="puzzle">
83-
The admin uses the [REST API](/reference/rest-api/); you can call it too.
84-
</Card>
85-
<Card title="Architecture" icon="open-book">
86-
Review the [content model](/concepts/content-model/).
87-
</Card>
88-
</CardGrid>
104+
The admin is a React application, so the Astro project must install `@astrojs/react`, `react`, and
105+
`react-dom` and register `react()` in `astro.config.mjs`. The site also needs server output, a
106+
database, and media storage. [Add EmDash to an existing Astro project](/existing-project/) shows the
107+
complete local configuration.

0 commit comments

Comments
 (0)