Arquitetura

Nesta página

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

Painel admin

Veja o que o painel admin oferece a editores e admins.