Pour commencer

Sur cette page

Ce guide vous accompagne de l’installation à la publication de votre premier article sur un site EmDash.

Prérequis

  • Node.js v22.12.0 ou supérieur (les versions impaires ne sont pas prises en charge)
  • npm, pnpm ou yarn
  • Un éditeur de code (VS Code recommandé)

Créer un nouveau projet

npm

npm create emdash@latest

pnpm

pnpm create emdash@latest

yarn

yarn create emdash

Suivez les invites pour nommer le projet et définir vos préférences.

Démarrer le serveur de développement

  1. Allez dans le répertoire du projet :

    cd my-emdash-site
  2. Installez les dépendances :

    npm install
  3. Lancez le serveur de développement :

    npm run dev
  4. Ouvrez votre navigateur sur http://localhost:4321

Terminer l’assistant de configuration

Lors de votre première visite sur le panneau d’administration, l’assistant de configuration d’EmDash vous guide pour la configuration initiale :

  1. Allez sur http://localhost:4321/_emdash/admin

  2. Vous serez redirigé vers l’assistant. Saisissez :

    • Site Title — Le nom de votre site
    • Tagline — Une courte description
    • Admin Email — Votre adresse e-mail
  3. Cliquez sur Create Site pour enregistrer votre passkey

  4. Votre navigateur vous demandera de créer une passkey avec Touch ID, Face ID, Windows Hello ou une clé de sécurité

Une fois la passkey enregistrée, vous êtes connecté et redirigé vers le tableau de bord d’administration.

Tableau de bord d’administration EmDash avec aperçu du contenu, activité récente et barre latérale de navigation

Votre premier article

  1. Dans la barre latérale d’administration, cliquez sur Posts sous Content.

  2. Cliquez sur New Post.

  3. Saisissez un titre et rédigez du contenu avec l’éditeur de texte enrichi.

    Éditeur d’article EmDash avec barre d’outils de texte enrichi et panneau latéral de publication
  4. Définissez le statut sur Published et cliquez sur Save.

  5. Visitez la page d’accueil de votre site pour voir l’article en direct — sans reconstruction !

Structure du projet

Votre projet EmDash suit la structure Astro standard avec quelques ajouts :

my-emdash-site/
├── astro.config.mjs      # Configuration Astro + EmDash
├── src/
│   ├── live.config.ts    # Configuration des Live Collections
│   ├── pages/
│   │   ├── index.astro   # Page d’accueil
│   │   └── posts/
│   │       └── [...slug].astro  # Pages d’articles dynamiques
│   ├── layouts/
│   │   └── Base.astro    # Mise en page de base
│   └── components/       # Vos composants Astro
├── .emdash/
│   ├── seed.json         # Fichier de graine du modèle
│   └── types.ts          # Types TypeScript générés
└── package.json

Fichiers de configuration

astro.config.mjs

Configure EmDash en tant qu’intégration Astro :

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",
			}),
		}),
	],
});

src/live.config.ts

Relie EmDash au système de contenu d’Astro :

import { defineLiveCollection } from "astro:content";
import { emdashLoader } from "emdash/runtime";

export const collections = {
	_emdash: defineLiveCollection({ loader: emdashLoader() }),
};

Variables d’environnement

Pour la production, vous devrez définir :

# Required for authentication
EMDASH_AUTH_SECRET=your-secret-here

# Optional: for content preview
EMDASH_PREVIEW_SECRET=your-preview-secret

Générez un secret d’authentification sécurisé avec :

npx emdash auth secret

Interroger le contenu dans les pages

Utilisez les fonctions de requête EmDash dans vos pages Astro. Elles suivent le modèle des live collections d’Astro et renvoient { entries, error } pour les collections et { entry, error } pour une entrée unique :

---
import { getEmDashCollection } from "emdash";
import Base from "../layouts/Base.astro";

const { entries: posts } = await getEmDashCollection("posts");
---

<Base title="Home">
  <h1>Latest Posts</h1>
  <ul>
    {posts.map((post) => (
      <li>
        <a href={`/posts/${post.slug}`}>{post.data.title}</a>
      </li>
    ))}
  </ul>
</Base>

Pour une entrée unique :

---
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>

Générer les types TypeScript

Pour une sécurité de types complète, générez les types à partir du schéma de base de données :

npx emdash types

Cela crée .emdash/types.ts avec des interfaces pour toutes vos collections. Votre éditeur complétera les noms de champs et signalera les erreurs de type.

Prochaines étapes

Vous avez maintenant un site EmDash fonctionnel ! Poursuivez ici :