- CSS 44%
- Astro 25.7%
- JavaScript 21%
- TypeScript 9.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Deploy to VPS / Build und per rsync ausliefern (push) Successful in 14s
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> |
||
| .claude | ||
| .forgejo/workflows | ||
| docs | ||
| packages/ui | ||
| public | ||
| scripts | ||
| src | ||
| .gitignore | ||
| astro.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
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 buildklont beim Bauen das Coaching-Repo nachcontent-src/(gitignored). Das Repo ist privat: In der CI liestscripts/sync-content.mjses mitCONTENT_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.tslegt 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_keysdes Deploy-Users auf dem VPS und steht zum Abgleich im Log)CONTENT_TOKEN: Token mit Lesezugriff (read:repository) aufjan/Coaching. Der Runner-Token deckt nur dieses Repo ab.- optional
DEPLOY_SSH_KNOWN_HOSTS: gepinnter Hostkey; ohne ihn holt der Workflow ihn perssh-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 insrc/layouts/BaseLayout.astro,public/robots.txtund den Caddy-Header anpassen sowie Impressum/Datenschutz ergänzen. - Das A11y-Panel (Schriftgröße, Kontrast, Bewegung) der anderen Sites ist noch nicht übernommen.