EmDash é uma integração Astro. Você a adiciona ao astro.config.mjs, escolhe um banco de dados e armazenamento, e define coleções de conteúdo. Esta página cobre o modelo que você precisa para construir um site. Para detalhes internos (layouts de tabela, caminho de requisição, geração de código), consulte Arquitetura (internos).
O que EmDash adiciona ao seu site
┌──────────────────────────────────────────────┐
│ Seu site Astro │
│ │
│ Páginas e componentes que você escreve │
│ │ │
│ │ getEmDashCollection() / getEmDashEntry()
│ ▼ │
│ ┌───────────────┐ ┌────────────────┐ │
│ │ Conteúdo │ │ Painel admin │ │
│ │ (seus dados) │◄────►│ /_emdash/admin │ │
│ └───────────────┘ └────────────────┘ │
│ │ │
│ Banco de dados (SQLite / libSQL / D1 / Postgres)│
│ Armazenamento de mídia (local / R2 / S3) │
└──────────────────────────────────────────────┘
Você escreve páginas e componentes normalmente. EmDash fornece o conteúdo, um painel admin para editá-lo, e o banco de dados e armazenamento por trás disso. Editores trabalham no painel admin; suas páginas leem o mesmo conteúdo através de funções de consulta.
Seu modelo de conteúdo
Você define coleções e campos — no painel admin ou com a CLI — e EmDash armazena conteúdo neles.
Mude a qualquer momento
Adicione, renomeie, remova ou mude o tipo de coleções e campos quando precisar. Mudanças têm efeito imediatamente.
Projetado por editores
Um editor de conteúdo pode projetar todo o modelo através da UI admin.
Tipado
Gere tipos TypeScript do modelo atual para autocompletar da consulta ao template.
Portável
Exporte o modelo como um arquivo JSON seed para controle de versão, e aplique-o em outro ambiente.
Veja o modelo de conteúdo para como definir, mudar, tipar e semear.
O conteúdo é ao vivo
EmDash serve conteúdo através das Live Collections do Astro em tempo de execução, então mudanças que um editor faz são visíveis imediatamente. Você lê conteúdo com duas funções:
import { getEmDashCollection, getEmDashEntry } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
const { entry: post } = await getEmDashEntry("posts", "my-post-slug");
Veja Consultando conteúdo para filtragem, paginação e rascunhos.
O que você configura
Você passa um banco de dados e um backend de armazenamento para a integração. Todo o resto tem um padrão.
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" }),
}),
],
});
- Banco de dados: SQLite (local ou libSQL), Cloudflare D1, ou PostgreSQL. Veja Opções de banco de dados.
- Armazenamento: o sistema de arquivos local, Cloudflare R2, ou qualquer armazenamento compatível com S3 para mídia. Veja Opções de armazenamento.
Estendendo com plugins
Plugins reagem a eventos do ciclo de vida de conteúdo e mídia e podem adicionar páginas admin, widgets de dashboard e configurações. Existem dois formatos:
- Plugins nativos executam no ambiente host com acesso completo. Melhores para plugins de primeira parte e confiáveis.
- Plugins em sandbox executam em um runtime isolado com permissões baseadas em capacidade. Melhores para plugins de terceiros.
Veja a visão geral de plugins para escolher e instalar plugins, ou criar um plugin.
Próximos passos
Coleções
Modelo de conteúdo
Entenda o modelo de conteúdo.
Painel admin
Veja o que o painel admin oferece a editores e admins.