Files
2026-02-13 15:58:36 +01:00

63 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RustyAstro
Astro-Frontend für [RustyCMS](https://github.com/…): nutzt die REST-API und die OpenAPI-Spezifikation. **Page**-Content (Listen- und Einzelseiten) ist angebunden.
## Voraussetzungen
- **RustyCMS** läuft (z.B. `cargo run` im Nachbarordner `rustycms`) unter `http://localhost:3000`.
- Node.js 18+
## Setup
```bash
cd rustyastro
cp .env.example .env
# Optional: .env anpassen (PUBLIC_CMS_URL)
npm install
```
## Entwicklung
```bash
# 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:
```bash
# RustyCMS muss laufen
yarn generate:api-types
```
Die generierte Datei ist `src/lib/cms-api.generated.ts` (wird von `cms.ts` importiert).
## Build
```bash
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 (mit `yarn generate:api-types` erzeugen)
- `src/pages/index.astro` Startseite mit Page-Liste
- `src/pages/[slug].astro` Einzelseite pro Page-Slug
- `src/layouts/Layout.astro` Layout inkl. Tailwind