054b5719e5
Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
2.0 KiB
Markdown
63 lines
2.0 KiB
Markdown
# 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
|