---
import { getEmDashEntry } from "emdash";
import { PortableText } from "emdash/ui";
import { Image } from "emdash/ui";
import Base from "../layouts/Base.astro";
const { entry: homepage } = await getEmDashEntry("homepage", "main");
Astro.cache.set(homepage.cacheHint);
const d = homepage.data;
---
Open Source • 10k+ Stars
{d.hero_headline.split('\n').map((line: string) => <>{line}
>)}
{d.hero_image && }
Self-hosted
Fully local (SQLite)
Needs Tina Cloud
Admin URL
/_emdash/admin
/admin
Database
SQLite, D1, PostgreSQL
Git-based
Setup
Template-based
Manual config
Auth
Passkey + OAuth
Git-based
Price
Free (open source)
Free tier + paid plans