Zum Inhalt springen

Erste Schritte mit EmDash

Diese Anleitung begleitet Sie bei der Erstellung Ihrer ersten EmDash-Website, von der Installation bis zur Veröffentlichung Ihres ersten Beitrags.

Wenn Sie noch prüfen, ob EmDash das richtige Astro-CMS ist, beginnen Sie mit Was ist EmDash? oder Bestes Astro-CMS und kehren Sie danach zu diesem Einrichtungsleitfaden zurück.

  • Node.js v22.12.0 oder höher (ungerade Versionsnummern werden nicht unterstützt)
  • npm, pnpm oder yarn
  • Ein Code-Editor (VS Code empfohlen)
Terminal-Fenster
npm create emdash@latest

Folgen Sie den Eingabeaufforderungen, um Ihr Projekt zu benennen und Ihre Einstellungen vorzunehmen.

  1. Navigieren Sie in Ihr Projektverzeichnis:

    Terminal-Fenster
    cd my-emdash-site
  2. Installieren Sie die Abhängigkeiten:

    Terminal-Fenster
    npm install
  3. Starten Sie den Dev-Server:

    Terminal-Fenster
    npm run dev
  4. Öffnen Sie Ihren Browser unter http://localhost:4321

Wenn Sie das Admin-Oberfläche zum ersten Mal besuchen, führt Sie der Einrichtungsassistent von EmDash durch die anfängliche Konfiguration:

  1. Navigieren Sie zu http://localhost:4321/_emdash/admin

  2. Sie werden zum Einrichtungsassistenten weitergeleitet. Geben Sie ein:

    • Seitentitel — Der Name Ihrer Website
    • Tagline — Eine kurze Beschreibung
    • Admin-E-Mail — Ihre E-Mail-Adresse
  3. Klicken Sie auf Website erstellen, um Ihren Passkey zu registrieren

  4. Ihr Browser fordert Sie auf, einen Passkey mit Touch ID, Face ID, Windows Hello oder einem Sicherheitsschlüssel zu erstellen

Sobald Ihr Passkey registriert ist, sind Sie angemeldet und werden zum Admin-Dashboard weitergeleitet.

EmDash admin dashboard showing content overview, recent activity, and navigation sidebar
  1. Klicken Sie in der Admin-Seitenleiste unter Inhalt auf Beiträge.

  2. Klicken Sie auf Neuer Beitrag.

  3. Geben Sie einen Titel ein und schreiben Sie Inhalte mit dem Rich-Text-Editor.

    EmDash post editor with rich text toolbar and publish sidebar
  4. Setzen Sie den Status auf Veröffentlicht und klicken Sie auf Speichern.

  5. Besuchen Sie die Startseite Ihrer Website, um Ihren Beitrag live zu sehen – kein Neubuild erforderlich!

Ihr EmDash-Projekt folgt einer standardmäßigen Astro-Struktur mit einigen Ergänzungen:

my-emdash-site/
├── astro.config.mjs # Astro + EmDash configuration
├── src/
│ ├── live.config.ts # Live Collections configuration
│ ├── pages/
│ │ ├── index.astro # Homepage
│ │ └── posts/
│ │ └── [...slug].astro # Dynamic post pages
│ ├── layouts/
│ │ └── Base.astro # Base layout
│ └── components/ # Your Astro components
├── .emdash/
│ ├── seed.json # Template seed file
│ └── types.ts # Generated TypeScript types
└── package.json

Hier wird EmDash als Astro-Integration konfiguriert:

astro.config.mjs
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",
baseUrl: "/_emdash/api/media/file",
}),
}),
],
});

Dies verbindet EmDash mit dem Content-System von Astro:

src/live.config.ts
import { defineLiveCollection } from "astro:content";
import { emdashLoader } from "emdash/runtime";
export const collections = {
_emdash: defineLiveCollection({ loader: emdashLoader() }),
};

Für Produktions-Deployments müssen Sie setzen:

Terminal-Fenster
# Required for authentication
EMDASH_AUTH_SECRET=your-secret-here
# Optional: für Inhaltsvorschau
EMDASH_PREVIEW_SECRET=your-preview-secret

Generieren Sie ein sicheres Auth-Secret mit:

Terminal-Fenster
npx emdash auth secret

Verwenden Sie die Abfragefunktionen von EmDash in Ihren Astro-Seiten. Diese folgen dem Muster von Astros dynamische Sammlungen und geben { entries, error } für Collections und { entry, error } für einzelne Einträge zurück:

src/pages/index.astro
---
import { getEmDashCollection } from "emdash";
import Base from "../../layouts/Base.astro";
const { entries: posts } = await getEmDashCollection("posts");
---
<Base title="Startseite">
<h1>Neueste Beiträge</h1>
<ul>
{posts.map((post) => (
<li>
<a href={`/posts/${post.slug}`}>{post.data.title}</a>
</li>
))}
</ul>
</Base>

Für einzelne Einträge:

src/pages/posts/[slug].astro
---
import { getEmDashEntry } from "emdash";
const { slug } = Astro.params;
const { entry: post } = await getEmDashEntry("posts", slug);
if (!post) {
return Astro.redirect("/404");
}
---
<h1>{post.data.title}</h1>

Für volle Typsicherheit generieren Sie Typen aus Ihrem Datenbankschema:

Terminal-Fenster
npx emdash types

Dies erstellt .emdash/types.ts mit Interfaces für alle Ihre Collections. Ihr Editor wird nun Feldnamen automatisch vervollständigen und Typfehler erkennen.

Sie haben jetzt eine funktionierende EmDash-Website! Hier erfahren Sie, was Sie als Nächstes tun können: