Inputs are only set for workflow_dispatch — on push the env vars were empty, causing generate-api-types to try localhost:3000 and fail with ECONNREFUSED. Add || defaults so push builds hit cms.pm86.de.
RustyAstro
Astro-Frontend für RustyCMS: nutzt die REST-API und die OpenAPI-Spezifikation. Page-Content (Listen- und Einzelseiten) ist angebunden.
Voraussetzungen
- RustyCMS läuft (z.B.
cargo runim Nachbarordnerrustycms) unterhttp://localhost:3000. - Node.js 18+
Setup
cd rustyastro
cp .env.example .env
# Optional: .env anpassen (PUBLIC_CMS_URL)
npm install
Entwicklung
# Terminal 1: CMS starten
cd rustycms && cargo run
# Terminal 2: Astro starten
cd rustyastro && npm run dev
Astro läuft standardmäßig auf http://localhost:4321. Die Startseite listet alle Pages aus dem CMS; Klick auf einen Eintrag öffnet die Einzelseite unter /:slug (z.B. /home, /about).
Konfiguration
| Variable | Beschreibung |
|---|---|
PUBLIC_CMS_URL |
Basis-URL des RustyCMS (ohne Slash), z.B. http://localhost:3000 |
Die OpenAPI-Spec wird von {PUBLIC_CMS_URL}/api-docs/openapi.json geladen (u.a. für die Anzeige auf der Startseite). Page-Daten kommen von GET /api/content/page und GET /api/content/page/:slug.
TypeScript-Typen für die API (z.B. PageEntry) werden aus dieser Spec generiert. Nach Schema-Änderungen im CMS:
# RustyCMS muss laufen
yarn generate:api-types
Die generierte Datei ist src/lib/cms-api.generated.ts (wird von cms.ts importiert).
Build
npm run build
Beim Build müssen die CMS-Endpunkte erreichbar sein (für getStaticPaths und die Daten der Seiten). Für Produktion PUBLIC_CMS_URL auf die echte CMS-URL setzen.
Struktur
src/lib/cms.ts– CMS-Client (OpenAPI, Pages, Slug-Liste)src/lib/cms-api.generated.ts– aus OpenAPI generierte Typen (mityarn generate:api-typeserzeugen)src/pages/index.astro– Startseite mit Page-Listesrc/pages/[slug].astro– Einzelseite pro Page-Slugsrc/layouts/Layout.astro– Layout inkl. Tailwind