Přeskočit na obsah

Rychlý start

Minimální cesta: založit web v adminu → nastavit proměnné → přidat API klienta → vyrenderovat obsah.

1. Získej přístupový klíč

Sekce “1. Získej přístupový klíč”

Založ web v adminu (nebo POST /admin/sites). Backend jednorázově vrátí apiKey (formát rk_…) — ulož si ho. To je tvůj X-Site-Key.

2. Nastav proměnné prostředí

Sekce “2. Nastav proměnné prostředí”
Terminál
CONTENTA_API_URL = https://api.contenta.cz/api/v1 # build-time
SITE_KEY = rk_… # apiKey (mimo bundle)
SITE_SLUG = muj-web
# Jen pro runtime moduly (komentáře/formuláře/hledání) — viditelné v prohlížeči:
PUBLIC_API_BASE_URL = https://api.contenta.cz/api/v1
PUBLIC_SITE_KEY = rk_…
PUBLIC_SITE_SLUG = muj-web
src/lib/contenta.ts
const API = import.meta.env.CONTENTA_API_URL ?? 'https://api.contenta.cz/api/v1';
const KEY = import.meta.env.SITE_KEY ?? '';
const SLUG = import.meta.env.SITE_SLUG ?? 'muj-web';
const BASE = `${API}/public/sites/${SLUG}`;
export async function get<T>(path: string, fallback: T): Promise<T> {
if (!KEY) return fallback; // bez klíče (CI) → prázdno
try {
const res = await fetch(`${BASE}${path}`, { headers: { 'X-Site-Key': KEY } });
if (!res.ok) return fallback; // backend down → build nespadne
const json = await res.json(); // { data, meta? }
return (json.data ?? fallback) as T;
} catch { return fallback; }
}
src/pages/blog/[slug].astro
---
import { get } from '../../lib/contenta';
export async function getStaticPaths() {
const posts = await get('/posts', []);
return posts.map((p) => ({ params: { slug: p.slug }, props: { p } }));
}
const post = await get(`/posts/${Astro.params.slug}`, null);
---
<h1>{post.title}</h1>
<div set:html={post.bodyHtml} />

Nastav build hook, aby se web po publikaci obsahu sám přebudoval.

Hotovo — dál pokračuj implementací modulů.