Architektur

Auf dieser Seite

EmDash ist eine Astro-Integration. Sie fügen sie zu astro.config.mjs hinzu, wählen eine Datenbank und Speicher aus und definieren Content-Collections. Diese Seite beschreibt das Modell, das Sie zum Erstellen einer Website benötigen. Für Interna (Tabellenlayouts, Anfragepfad, Code-Generierung) siehe Architektur (Interna).

Was EmDash zu Ihrer Website hinzufügt

┌──────────────────────────────────────────────┐
│             Ihre Astro-Website                │
│                                               │
│   Von Ihnen geschriebene Seiten und Komponenten│
│        │                                      │
│        │  getEmDashCollection() / getEmDashEntry()
│        ▼                                      │
│   ┌───────────────┐      ┌────────────────┐   │
│   │   Inhalte     │      │  Admin-Panel   │   │
│   │  (Ihre Daten) │◄────►│ /_emdash/admin │   │
│   └───────────────┘      └────────────────┘   │
│        │                                      │
│   Datenbank (SQLite / libSQL / D1 / Postgres) │
│   Medienspeicher (lokal / R2 / S3)            │
└──────────────────────────────────────────────┘

Sie schreiben Seiten und Komponenten wie gewohnt. EmDash liefert den Inhalt, ein Admin-Panel zum Bearbeiten und die Datenbank sowie den Speicher dahinter. Redakteure arbeiten im Admin-Panel; Ihre Seiten lesen denselben Inhalt über Query-Funktionen.

Ihr Content-Modell

Sie definieren Collections und Felder — im Admin-Panel oder mit der CLI — und EmDash speichert Inhalte darin.

Jederzeit änderbar

Collections und Felder können Sie jederzeit hinzufügen, umbenennen, entfernen oder umtypen. Änderungen werden sofort wirksam.

Von Redakteuren gestaltet

Ein Content-Redakteur kann das gesamte Modell über die Admin-UI gestalten.

Typisiert

Generieren Sie TypeScript-Typen aus dem aktuellen Modell für Autovervollständigung von Query bis Template.

Portabel

Exportieren Sie das Modell als JSON-Seed-Datei für die Versionskontrolle und wenden Sie es in einer anderen Umgebung an.

Siehe das Content-Modell für Informationen zum Definieren, Ändern, Typisieren und Seeden.

Inhalte sind live

EmDash stellt Inhalte zur Laufzeit über Astros Live Collections bereit, sodass Änderungen eines Redakteurs sofort sichtbar sind. Sie lesen Inhalte mit zwei Funktionen:

import { getEmDashCollection, getEmDashEntry } from "emdash";

const { entries: posts } = await getEmDashCollection("posts");
const { entry: post } = await getEmDashEntry("posts", "my-post-slug");

Siehe Inhalte abfragen für Filterung, Paginierung und Entwürfe.

Was Sie konfigurieren

Sie übergeben eine Datenbank und ein Speicher-Backend an die Integration. Alles andere hat eine Standardeinstellung.

import { defineConfig } from "astro/config";
import emdash, { local } from "emdash/astro";
import { sqlite } from "emdash/db";

export default defineConfig({
	integrations: [
		emdash({
			database: sqlite({ url: "file:./data.db" }),
			storage: local({ directory: "./uploads" }),
		}),
	],
});
  • Datenbank: SQLite (lokal oder libSQL), Cloudflare D1 oder PostgreSQL. Siehe Datenbankoptionen.
  • Speicher: das lokale Dateisystem, Cloudflare R2 oder jeder S3-kompatible Speicher für Medien. Siehe Speicheroptionen.

Erweiterung mit Plugins

Plugins reagieren auf Content- und Medien-Lifecycle-Events und können Admin-Seiten, Dashboard-Widgets und Einstellungen hinzufügen. Es gibt zwei Formate:

  • Native Plugins laufen in der Host-Umgebung mit vollem Zugriff. Am besten für First-Party- und vertrauenswürdige Plugins.
  • Sandboxed Plugins laufen in einer isolierten Laufzeitumgebung mit capability-basierten Berechtigungen. Am besten für Drittanbieter-Plugins.

Siehe die Plugin-Übersicht zum Auswählen und Installieren von Plugins oder Plugin erstellen.

Nächste Schritte

Admin-Panel

Sehen Sie, was das Admin-Panel Redakteuren und Admins bietet.