Primi passi

In questa pagina

Questa guida ti accompagna nella creazione del tuo primo sito EmDash, dall’installazione alla pubblicazione del tuo primo articolo.

Prerequisiti

  • Node.js v22.12.0 o superiore (le versioni dispari non sono supportate)
  • npm, pnpm o yarn
  • Un editor di codice (VS Code consigliato)

Creare un nuovo progetto

npm

npm create emdash@latest

pnpm

pnpm create emdash@latest

yarn

yarn create emdash

Segui le istruzioni per dare un nome al tuo progetto e configurare le tue preferenze.

Avviare il server di sviluppo

  1. Naviga nella directory del tuo progetto:

    cd my-emdash-site
  2. Installa le dipendenze:

    npm install
  3. Avvia il server di sviluppo:

    npm run dev
  4. Apri il browser su http://localhost:4321

Completare la procedura guidata

Quando visiti il pannello admin per la prima volta, la procedura guidata di EmDash ti guida attraverso la configurazione iniziale:

  1. Naviga su http://localhost:4321/_emdash/admin

  2. Sarai reindirizzato alla procedura guidata. Inserisci:

    • Titolo del sito — Il nome del tuo sito
    • Tagline — Una breve descrizione
    • Email admin — Il tuo indirizzo email
  3. Clicca su Create Site per registrare il tuo passkey

  4. Il browser ti chiederà di creare un passkey usando Touch ID, Face ID, Windows Hello o una chiave di sicurezza

Una volta registrato il passkey, sei connesso e reindirizzato alla dashboard admin.

Dashboard admin di EmDash che mostra panoramica dei contenuti, attività recente e barra di navigazione laterale

Il tuo primo articolo

  1. Nella barra laterale admin, clicca su Posts sotto Contenuto.

  2. Clicca su New Post.

  3. Inserisci un titolo e scrivi del contenuto usando l’editor di testo formattato.

    Editor di articoli EmDash con barra degli strumenti di testo formattato e barra laterale di pubblicazione
  4. Imposta lo stato su Published e clicca su Save.

  5. Visita la homepage del tuo sito. L’articolo appare immediatamente.

Struttura del progetto

Il tuo progetto EmDash segue una struttura Astro standard con alcune aggiunte:

my-emdash-site/
├── astro.config.mjs      # Configurazione Astro + EmDash
├── src/
│   ├── live.config.ts    # Configurazione Live Collections
│   ├── pages/
│   │   ├── index.astro   # Homepage
│   │   └── posts/
│   │       └── [...slug].astro  # Pagine articoli dinamiche
│   ├── layouts/
│   │   └── Base.astro    # Layout di base
│   └── components/       # I tuoi componenti Astro
├── .emdash/
│   ├── seed.json         # File seed del template
│   └── types.ts          # Tipi TypeScript generati
└── package.json

File di configurazione

astro.config.mjs

La seguente configurazione registra EmDash come integrazione Astro con un database SQLite locale e storage file locale:

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

export default defineConfig({
	integrations: [
		react(), // Richiesto — l'interfaccia admin è un'app React
		emdash({
			database: sqlite({ url: "file:./data.db" }),
			storage: local({
				directory: "./uploads",
				baseUrl: "/_emdash/api/media/file",
			}),
		}),
	],
});

src/live.config.ts

Il seguente file connette EmDash al sistema di contenuti di Astro attraverso una singola collezione live:

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

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

Variabili d’ambiente

Per la produzione, genera una chiave di crittografia per i secret dei plugin con il seguente comando:

npx emdash secrets generate

Aggiungi il valore generato al tuo ambiente come EMDASH_ENCRYPTION_KEY, come mostrato sotto. Questa chiave crittografa i secret dei plugin a riposo. Impostala ora così il tuo deployment è pronto quando la crittografia dei secret dei plugin la usa.

EMDASH_ENCRYPTION_KEY=emdash_enc_v1_...

La chiave non viene mai memorizzata nel database — solo il testo cifrato. Eseguine il backup in un luogo durevole, perché perderla significa perdere ogni secret crittografato con essa.

Il secret HMAC di preview e il salt dell’hash IP dei commentatori vengono generati e memorizzati nel database al primo utilizzo, quindi non hai bisogno di impostarli. Sovrascrivi il secret di preview solo se un processo separato deve verificare gli stessi token del tuo sito principale, come mostrato sotto.

EMDASH_PREVIEW_SECRET=your-preview-secret

Interrogare i contenuti nelle pagine

Usa le funzioni di query di EmDash nelle tue pagine Astro. Queste seguono il pattern delle collezioni live di Astro, restituendo { entries, error } per le collezioni e { entry, error } per le voci singole:

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

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

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

La seguente pagina recupera una singola voce per slug:

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

Generare i tipi TypeScript

Per la sicurezza completa dei tipi, genera i tipi dallo schema del tuo database:

npx emdash types

Questo crea .emdash/types.ts con interfacce per tutte le tue collezioni. Il tuo editor ora completerà automaticamente i nomi dei campi e rileverà gli errori di tipo.

Prossimi passi

Con il sito in funzione, le seguenti pagine coprono cosa fare dopo: