Files
Orchestrator/privat/CV/andreknie.de/README.md
T

99 lines
3.5 KiB
Markdown

# andreknie.de
Personal homepage for Dr. Andre Knie. Built with Vite 8 + React 19, Express 5 backend, file-based CMS.
## Quick Start
```bash
npm install
npm run dev # Frontend (port 5173)
npm run start:server # Backend (port 3003)
```
## Content Management
Add content by creating files in `content/`:
| Directory | Format | What |
|-----------|--------|------|
| `content/posts/` | Markdown (.md) | Articles, LinkedIn posts |
| `content/kniepunkt/` | Markdown (.md) | Kniepunkt column issues |
| `content/podcast/` | YAML (.yaml) | Podcast episode metadata |
| `content/talks/` | YAML (.yaml) | Talk/speaking metadata |
| `content/consulting/` | YAML (.yaml) | Consulting examples |
| `content/resources/` | YAML (.yaml) | Downloadable resources |
| `content/events/` | YAML (.yaml) | Events and dates |
| `content/meta/profile.yaml` | YAML | Name, Rollen, Summary, Zielgruppen, Positionierung |
| `content/meta/about.yaml` | YAML | "Über mich"-Seite: Links, Stationen, Zertifizierungen, Persönliches |
> **Speaker CV:** Wird über ein Anfrageformular auf der Über-mich-Seite angefordert (Name, E-Mail, Nachricht) und automatisch per Mail mit PDF-Anhang versandt. Lege die Datei unter `public/resources/speaker-cv-andre-knie.pdf` ab.
| `content/meta/stats.yaml` | YAML | Key-Facts (Zahlen für Stats-Sektion) |
| `content/meta/testimonials.yaml` | YAML | Kunden-Zitate für den Slider |
| `content/meta/logos.yaml` | YAML | Logo-Liste für die Marquee (light/dark Band) |
| `content/meta/services.yaml` | YAML | Leistungskategorien für Consulting-Seite |
| `content/meta/speaking.yaml` | YAML | Speaking-Ausklappbereiche (Keynotes/Workshops/Panels): Überschrift + mögliche Themen |
| `content/meta/newsletter.yaml` | YAML | Newsletter-Bereich im Footer: LinkedIn-Newsletter-Link + E-Mail-Anmeldung an/aus |
### Wie du Content änderst
**Testimonial hinzufügen:** Öffne `content/meta/testimonials.yaml`, füge am Ende hinzu:
```yaml
- quote: "Dein Zitat hier"
name: "Vorname Nachname"
role: "Rolle, Organisation"
```
**Logo hinzufügen:** Logo-Datei nach `public/logos/` kopieren, dann in `content/meta/logos.yaml`:
```yaml
# Unter "light:" für dunkle Logos, unter "dark:" für helle Logos
- name: "Firmenname"
src: "/logos/dateiname.svg"
```
**Neuen Talk/Workshop:** Neue Datei in `content/talks/mein-talk.yaml`:
```yaml
id: mein-talk-2026
title: "Titel des Vortrags"
description: "Kurzbeschreibung"
format: keynote # oder: workshop, panel
target_audience: [mittelstand, executives]
tags: [ki, transformation]
visibility: primary # oder: secondary (nicht auf Homepage beworben)
events:
- name: "Event-Name"
date: 2026-01-15
location: "Ort"
```
**Neuen Podcast-Episode:** Neue Datei in `content/podcast/ep-013-titel.yaml`
**Neue Kniepunkt-Ausgabe:** Neue Datei in `content/kniepunkt/040-titel.md` mit Frontmatter
### Visibility
Each content item has a `visibility` field:
- `primary` (default) — featured on homepage, highlights, CTAs
- `secondary` — visible in archives but not actively promoted
### Theming
All colors are in `src/index.css` under `:root`. Change `--accent-color` and related variables to retheme the entire site.
## Deployment
```bash
npm run build # Build static site to dist/
docker compose up -d # Start backend
# Copy dist/ to /opt/andreknie/site/ on server
# Caddy serves static + proxies /api/* to Express
```
## Tech Stack
- Vite 8 + React 19 (JSX)
- react-router-dom v7
- Express 5 (forms only)
- CSS custom properties (no Tailwind)
- Docker + Caddy
- File-based CMS (Markdown + YAML)