building-dineway-site

Installation
SKILL.md

Building a Dineway Site

Dineway is an Agentic Web builder. It stores schema in the database (not in code), serves content via live content collections, and provides a full admin UI at /_dineway/admin. Sites are standard Astro projects with the dineway integration.

Common Gotchas

These are the things that silently break sites. Know them before you start.

  1. Image fields are objects, not strings. post.data.featured_image is { id, src, alt }. Writing <img src={post.data.featured_image} /> renders [object Object]. Use <Image image={post.data.featured_image} /> from "dineway/ui".

  2. entry.id vs entry.data.id are different things. entry.id is the slug (use in URLs). entry.data.id is the database ULID (use for getEntryTerms, Comments, and other API calls that need the real ID). Mixing them up causes silent empty results.

  3. Taxonomy names must match the seed exactly. If your seed defines "name": "category", you must query getTerm("category", slug) -- not "categories". Wrong name = empty results, no error.

  4. Always pass cacheHint to Astro.cache.set(). Every query returns a cacheHint. Call Astro.cache.set(cacheHint) on every page that queries content, or cache invalidation won't work when editors publish changes.

  5. No getStaticPaths for CMS content. Dineway content is dynamic. Pages must be server-rendered (output: "server" in astro.config.mjs).

  6. Discovery endpoints are part of "done". Production sites must resolve a public origin via siteUrl or DINEWAY_SITE_URL, layouts must render DinewayHead, every routable collection must include supports: ["seo"] and urlPattern, and the site must expose /robots.txt, /sitemap.xml, and /schemamap.xml.

Installs
8
GitHub Stars
2
First Seen
Jul 3, 2026
building-dineway-site — dineway/dineway-skills