No description
  • CSS 44%
  • Astro 25.7%
  • JavaScript 21%
  • TypeScript 9.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dasFuH 34b8cf963d
All checks were successful
Deploy to VPS / Build und per rsync ausliefern (push) Successful in 14s
Jedes Kapitel mit genau einer Ueberschrift
Wichen Dateiname und erste Ueberschrift voneinander ab, stand der
Dateiname zusaetzlich als Eyebrow ueber dem Kapitel - bei 2, 8 und 9
sah das wie eine doppelte Ueberschrift aus, bei den anderen nicht.

Jetzt zeigt jedes Kapitel nur seine "# ..."-Ueberschrift. Beginnt eine
Datei ohne Ueberschrift, steht der Dateiname an ihrer Stelle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 10:47:14 +02:00
.claude v0.1.0 2026-10-16 09:01:53 +02:00
.forgejo/workflows CI: privates Inhalts-Repo per CONTENT_TOKEN klonen, Deploy-Namen angleichen 2026-10-16 09:34:39 +02:00
docs docs: Coaching-Trigger-Kopie auf HTTP/1.1-Fassung nachziehen 2026-10-16 11:07:22 +02:00
packages/ui v0.1.0 2026-10-16 09:01:53 +02:00
public v0.1.0 2026-10-16 09:01:53 +02:00
scripts CI: privates Inhalts-Repo per CONTENT_TOKEN klonen, Deploy-Namen angleichen 2026-10-16 09:34:39 +02:00
src Jedes Kapitel mit genau einer Ueberschrift 2026-10-23 10:47:14 +02:00
.gitignore v0.1.0 2026-10-16 09:01:53 +02:00
astro.config.mjs v0.1.0 2026-10-16 09:01:53 +02:00
package-lock.json v0.1.0 2026-10-16 09:01:53 +02:00
package.json v0.1.0 2026-10-16 09:01:53 +02:00
README.md Kapitel nach Nummer statt nach Zeichen sortieren 2026-10-23 10:36:28 +02:00
tsconfig.json v0.1.0 2026-10-16 09:01:53 +02:00

Matchpoint · matchpoint.janhoepken.de

Präsentationsseite zum Mastermind Matchpoint. Technischer Kern: @studio/core (v1.3.0), Optik: Designsystem Oldenburger Wohnküchen (src/styles/tokens.css, Kopie aus Designsystem/). Die Inhalte liegen als Markdown im Repo jan/Coaching.

So hängt es zusammen

jan/Coaching (*.md)  ──►  scripts/sync-content.mjs  ──►  content-src/  ──►  Astro  ──►  dist/  ──►  rsync  ──►  VPS (Caddy)
  • npm run build klont beim Bauen das Coaching-Repo nach content-src/ (gitignored). Das Repo ist privat: In der CI liest scripts/sync-content.mjs es mit CONTENT_TOKEN, lokal reicht der normale Git-Login.
  • Jede nicht leere Markdown-Datei im Coaching-Repo wird ein Abschnitt, ihr Dateiname der Menüpunkt. Gelöschte oder leere Dateien verschwinden von selbst. src/lib/sections.ts legt nur die Reihenfolge fest; Dateien, die dort fehlen, kommen hinten dran, sortiert nach Kapitelnummer im Dateinamen („2. …“ vor „10. …“) und sonst alphabetisch.
  • Alle Überschriften der Markdown rutschen eine Ebene tiefer (astro.config.mjs), weil die Seite genau ein <h1> hat.

Entwickeln

npm install
npm run dev

Lokal an Texten arbeiten, ohne zu pushen: CONTENT_DIR=../Coaching npm run dev (PowerShell: $env:CONTENT_DIR="..\Coaching"; npm run dev). Weitere Variablen: CONTENT_REPO, CONTENT_REF, CONTENT_TOKEN.

Deploy

.forgejo/workflows/deploy.yml baut bei jedem Push auf main (und per „Run workflow“) und spiegelt dist/ per rsync über SSH auf den VPS. Aufbau und Absicherungen wie in der Angebotspräsentation.

Secrets (Einstellungen → Actions → Secrets):

  • DEPLOY_SSH_HOST, DEPLOY_SSH_USER, DEPLOY_SSH_KEY (privater Schlüssel; der öffentliche Teil gehört in ~/.ssh/authorized_keys des Deploy-Users auf dem VPS und steht zum Abgleich im Log)
  • CONTENT_TOKEN: Token mit Lesezugriff (read:repository) auf jan/Coaching. Der Runner-Token deckt nur dieses Repo ab.
  • optional DEPLOY_SSH_KNOWN_HOSTS: gepinnter Hostkey; ohne ihn holt der Workflow ihn per ssh-keyscan.

Variablen (Einstellungen → Actions → Variablen):

  • DEPLOY_TARGET_DIR (/srv/www/matchpoint)
  • optional DEPLOY_SSH_PORT (Standard 22)

Neue Texte gehen automatisch online: .forgejo/workflows/rebuild-site.yml in jan/Coaching stößt bei jedem Push diesen Deploy an (Kopie: docs/coaching-trigger.yml). Dort muss das Secret SITE_DISPATCH_TOKEN gesetzt sein.

Einmalig auf dem VPS

sudo mkdir -p /srv/www/matchpoint
sudo chown -R deploy:deploy /srv/www/matchpoint

Caddy-Block (A-Record matchpoint.janhoepken.de → VPS-IP zuerst anlegen, dann Block und Reload):

matchpoint.janhoepken.de {
    root * /srv/www/matchpoint
    encode zstd gzip
    header X-Robots-Tag "noindex, nofollow"
    header Referrer-Policy "strict-origin-when-cross-origin"
    file_server
}
sudo systemctl reload caddy && systemctl status caddy --no-pager -l | grep -A2 ExecReload

Offen

  • Die Seite steht auf noindex (Arbeitsstand). Für die Öffentlichkeit: Meta-Tag in src/layouts/BaseLayout.astro, public/robots.txt und den Caddy-Header anpassen sowie Impressum/Datenschutz ergänzen.
  • Das A11y-Panel (Schriftgröße, Kontrast, Bewegung) der anderen Sites ist noch nicht übernommen.