Primeiros Passos

Nesta página

Este guia orienta você na criação do seu primeiro site EmDash, desde a instalação até a publicação da sua primeira postagem.

Pré-requisitos

  • Node.js v22.12.0 ou superior (versões com números ímpares não são suportadas)
  • npm, pnpm ou yarn
  • Um editor de código (VS Code recomendado)

Criar um Novo Projeto

npm

npm create emdash@latest

pnpm

pnpm create emdash@latest

yarn

yarn create emdash

Siga as instruções para nomear seu projeto e configurar suas preferências.

Iniciar o Servidor de Desenvolvimento

  1. Navegue até o diretório do seu projeto:

    cd my-emdash-site
  2. Instale as dependências:

    npm install
  3. Inicie o servidor de desenvolvimento:

    npm run dev
  4. Abra seu navegador em http://localhost:4321

Completar o Assistente de Configuração

Quando você visita o painel de administração pela primeira vez, o Assistente de Configuração do EmDash orienta você através da configuração inicial:

  1. Navegue para http://localhost:4321/_emdash/admin

  2. Você será redirecionado para o Assistente de Configuração. Digite:

    • Site Title — O nome do seu site
    • Tagline — Uma breve descrição
    • Admin Email — Seu endereço de e-mail
  3. Clique em Create Site para registrar sua passkey

  4. Seu navegador solicitará que você crie uma passkey usando Touch ID, Face ID, Windows Hello ou uma chave de segurança

Uma vez que sua passkey esteja registrada, você está logado e redirecionado para o painel de administração.

Painel de administração EmDash mostrando visão geral do conteúdo, atividade recente e barra lateral de navegação

Sua Primeira Postagem

  1. Na barra lateral de administração, clique em Posts em Content.

  2. Clique em New Post.

  3. Digite um título e escreva algum conteúdo usando o editor de texto rico.

    Editor de postagem EmDash com barra de ferramentas de texto rico e barra lateral de publicação
  4. Defina o status como Published e clique em Save.

  5. Visite a página inicial do seu site. A postagem aparece imediatamente.

Estrutura do Projeto

Seu projeto EmDash segue uma estrutura Astro padrão com algumas adições:

my-emdash-site/
├── astro.config.mjs      # Configuração Astro + EmDash
├── src/
│   ├── live.config.ts    # Configuração Live Collections
│   ├── pages/
│   │   ├── index.astro   # Página inicial
│   │   └── posts/
│   │       └── [...slug].astro  # Páginas de postagem dinâmicas
│   ├── layouts/
│   │   └── Base.astro    # Layout base
│   └── components/       # Seus componentes Astro
├── .emdash/
│   ├── seed.json         # Arquivo seed de template
│   └── types.ts          # Tipos TypeScript gerados
└── package.json

Arquivos de Configuração

astro.config.mjs

A seguinte configuração registra o EmDash como uma integração Astro com um banco de dados SQLite local e armazenamento de arquivo local:

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

O seguinte arquivo conecta o EmDash ao sistema de conteúdo do Astro através de uma única coleção ao vivo:

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

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

Variáveis de Ambiente

Para produção, gere uma chave de criptografia para segredos de plugins com o seguinte comando:

npx emdash secrets generate

Adicione o valor gerado ao seu ambiente como EMDASH_ENCRYPTION_KEY, conforme mostrado abaixo. Esta chave criptografa segredos de plugins em repouso. Configure-a agora para que sua implantação esteja pronta quando a criptografia de segredos de plugins a usar.

EMDASH_ENCRYPTION_KEY=emdash_enc_v1_...

A chave nunca é armazenada no banco de dados — apenas texto cifrado criptografado é armazenado. Faça backup em algum lugar durável, porque perdê-la significa perder todos os segredos criptografados com ela.

O segredo HMAC de visualização e o salt de hash de IP do comentarista são gerados e armazenados no banco de dados no primeiro uso, então você não precisa configurá-los. Substitua o segredo de visualização apenas se um processo separado precisar verificar os mesmos tokens que seu site principal, conforme mostrado abaixo.

EMDASH_PREVIEW_SECRET=your-preview-secret

Consultar Conteúdo em Páginas

Use as funções de consulta do EmDash em suas páginas Astro. Estas seguem o padrão de coleções ao vivo do Astro, retornando { entries, error } para coleções e { entry, error } para entradas individuais:

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

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

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

A página seguinte busca uma entrada individual por 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>

Gerar Tipos TypeScript

Para segurança de tipo completa, gere tipos a partir do seu esquema de banco de dados:

npx emdash types

Isso cria .emdash/types.ts com interfaces para todas as suas coleções. Seu editor agora autocompletará nomes de campos e detectará erros de tipo.

Próximos Passos

Com o site em execução, as seguintes páginas cobrem o que fazer a seguir: