99 lines
3.5 KiB
Markdown
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)
|