--- 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 && }

{d.features_section_title}

{d.features_section_subtitle}

{d.feature_1_title}

{d.feature_2_title}

{d.feature_3_title}

{d.feature_4_title}

{d.feature_5_title}

{d.feature_6_title}

{d.comparison_title}

Feature
EmDash
Tina CMS
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

{d.cta_title}