- Marketing landing page with hero, features, testimonials, FAQ, pricing - EmDash CMS with pages collection and marketing blocks - Full seed data with all content sections - Dockerfile with entrypoint for database persistence - Responsive design with CSS variables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
1.6 KiB
Markdown
28 lines
1.6 KiB
Markdown
This is an EmDash site -- a CMS built on Astro with a full admin UI.
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
npx emdash dev # Start dev server (runs migrations, seeds, generates types)
|
|
npx emdash types # Regenerate TypeScript types from schema
|
|
npx emdash seed seed/seed.json --validate # Validate seed file
|
|
```
|
|
|
|
The admin UI is at `http://localhost:4321/_emdash/admin`.
|
|
|
|
## Key Files
|
|
|
|
| File | Purpose |
|
|
| ------------------------ | ---------------------------------------------------------------------------------- |
|
|
| `astro.config.mjs` | Astro config with `emdash()` integration, database, and storage |
|
|
| `src/live.config.ts` | EmDash loader registration (boilerplate -- don't modify) |
|
|
| `seed/seed.json` | Schema definition + demo content (collections, fields, taxonomies, menus, widgets) |
|
|
| `emdash-env.d.ts` | Generated types for collections (auto-regenerated on dev server start) |
|
|
| `src/layouts/Base.astro` | Base layout with EmDash wiring (menus, search, page contributions) |
|
|
| `src/pages/` | Astro pages -- all server-rendered |
|
|
|
|
## Rules
|
|
|
|
- All content pages must be server-rendered (`output: "server"`). No `getStaticPaths()` for CMS content.
|
|
- `entry.id` is the slug (for URLs). `entry.data.id` is the database ULID (for API calls like `getEntryTerms`).
|
|
- Always call `Astro.cache.set(cacheHint)` on pages that query content. |