Initial commit: RustyAstro + OpenAPI-Typen aus RustyCMS
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user