{"id":50551785,"url":"https://github.com/chhex/andi","last_synced_at":"2026-06-04T04:02:05.691Z","repository":{"id":358320473,"uuid":"1240738471","full_name":"chhex/andi","owner":"chhex","description":"Andi's Website","archived":false,"fork":false,"pushed_at":"2026-06-03T13:06:23.000Z","size":27530,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-03T13:10:54.602Z","etag":null,"topics":["astro","daisyui","githubauth","portfolio-website","sveltia-cms","tailwindcss","vercel","web3forms"],"latest_commit_sha":null,"homepage":"https://andi-cyan.vercel.app","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chhex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-16T14:04:19.000Z","updated_at":"2026-06-03T13:06:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chhex/andi","commit_stats":null,"previous_names":["chhex/andi"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/chhex/andi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fandi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fandi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fandi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fandi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chhex","download_url":"https://codeload.github.com/chhex/andi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fandi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33888302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astro","daisyui","githubauth","portfolio-website","sveltia-cms","tailwindcss","vercel","web3forms"],"created_at":"2026-06-04T04:02:04.881Z","updated_at":"2026-06-04T04:02:05.676Z","avatar_url":"https://github.com/chhex.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# André Behr – Journalist \u0026 Writer Website\n\n## Übersicht\n\nPortfolio-Website für André Behr, Journalist mit über 40 Jahren Erfahrung.\nGebaut als JAMstack Site – schnell, sicher, wartungsarm.\n\n## Stack\n\n| Tool | Zweck | Warum |\n|---|---|---|\n| **Astro 6** | Static Site Generator | Schnell, modern, kein JS Overhead |\n| **Tailwind CSS v4** | Styling | Utility-first, flexibel |\n| **DaisyUI v5** | UI Components \u0026 Themes | Theme-Switching, saubere Komponenten |\n| **Sveltia CMS** | Content Management | Modernes UI, GitHub OAuth, kein Server |\n| **Vercel** | Hosting + OAuth Proxy | Auto-Deploy, schnell, offen |\n| **Web3Forms** | Kontaktformular | Gratis, kein Backend nötig |\n| **GitHub** | Versionierung | Single Source of Truth |\n\n## Warum dieser Stack?\n\n### Sveltia CMS statt Decap/TinaCMS\n\n- **TinaCMS** – primär für Next.js, Astro v6 nicht unterstützt\n- **Decap CMS** – Netlify Identity hatte CORS Probleme, Git Gateway in Sveltia deprecated\n- **Sveltia CMS** – modernes UI, GitHub OAuth direkt, Drop-in Ersatz für Decap\n\n### Vercel statt Netlify\n\n- Netlify Identity hatte persistente CORS Probleme\n- Vercel ist offener und flexibler\n- GitHub OAuth Proxy als Vercel Function – sauber und kontrollierbar\n\n### Web3Forms statt Netlify Forms / Formspree\n\n- Netlify Forms: Custom Redirect kostenpflichtig\n- Formspree: 50 Submissions/Monat Limit\n- Web3Forms: Gratis, unbegrenzt, einfache Integration\n\n## Architektur\n\n```\nGitHub (Single Source of Truth)\n    ↓ git push\nVercel (Hosting + OAuth Proxy)\n    ↓ auto-deploy\nAstro (Static Site)\n    ↓ content aus JSON\nSveltia CMS → GitHub Commit → Vercel Deploy\nWeb3Forms → Email an André\n```\n\n## Separation of Concerns\n\n| Was | Wer | Wie |\n|---|---|---|\n| Struktur \u0026 Layout | Chris | Astro Pages + Components |\n| Styling \u0026 Themes | Chris | Tailwind / DaisyUI global.css |\n| Inhalte \u0026 Texte | André | Sveltia CMS im Browser |\n| Referenzen \u0026 Media | André | Sveltia CMS |\n| Versionierung | GitHub | Automatisch bei jeder Änderung |\n\n## Lokale Entwicklung\n\n```bash\n# Dependencies installieren\nnpm install\n\n# Entwicklungsserver starten\nnpm run dev\n\n# Build testen\nnpm run build\nnpm run preview\n```\n\n## Content Management – für André\n\n**Login:** `https://andi-cyan.vercel.app/admin/index.html`\n\n**Was André selbst ändern kann:**\n\n- Homepage Text\n- Über mich – Absätze hinzufügen/ändern/löschen\n- Angebot – Leistungen hinzufügen/ändern/löschen\n- Referenzen – Artikel, PDFs, Videos, Audio, Bilder\n- Kontakt – Email, LinkedIn, Intro Text\n\n**Was Chris macht:**\n\n- Strukturelle Änderungen (neue Seiten, Navigation)\n- Design Anpassungen (Themes, Layout)\n- Technische Updates\n\n**Wichtig:** Jede Änderung im CMS = automatischer GitHub Commit = automatisches Vercel Deploy\n\n## Deployment\n\n```bash\ngit add .\ngit commit -m \"Beschreibung\"\ngit push\n# → Vercel deployt automatisch in ~1 Minute\n```\n\n## Environment Variables (Vercel)\n\n```\nGITHUB_CLIENT_ID        = GitHub OAuth App Client ID\nGITHUB_CLIENT_SECRET    = GitHub OAuth App Client Secret\nPUBLIC_WEB3FORMS_KEY    = Web3Forms Access Key\n```\n\n## GitHub OAuth Setup\n\nOAuth App auf GitHub:\n\n- **Homepage URL:** `https://andi-cyan.vercel.app`\n- **Callback URL:** `https://andi-cyan.vercel.app/api/auth/callback`\n\n## Projektstruktur\n\n```\n/\n├── api/\n│   └── auth/\n│       ├── index.js        # GitHub OAuth redirect\n│       └── callback.js     # GitHub OAuth callback\n├── content/\n│   ├── home.json\n│   ├── ueber.json\n│   ├── angebot.json\n│   ├── referenzen.json\n│   └── kontakt.json\n├── public/\n│   ├── admin/\n│   │   ├── index.html      # Sveltia CMS\n│   │   └── config.yml      # CMS Konfiguration\n│   ├── dokumente/\n│   └── images/\n└── src/\n    ├── components/\n    │   ├── Header.astro\n    │   ├── IconAudio.astro\n    │   ├── IconBild.astro\n    │   ├── IconDownload.astro\n    │   ├── IconExternalLink.astro\n    │   └── IconVideo.astro\n    ├── layouts/\n    │   └── Layout.astro\n    ├── pages/\n    │   ├── index.astro\n    │   ├── ueber-mich.astro\n    │   ├── angebot.astro\n    │   ├── referenzen.astro\n    │   └── kontakt.astro\n    └── styles/\n        └── global.css\n```\n\n## Themes\n\nDaisyUI Themes wechselbar via Dropdown im Header.\nAktives Theme: **andre** (custom, definiert in global.css)\n\nVerfügbare Themes: andre, nord, corporate, dim, lemonade, sunset\n\n## Git Tags\n\n| Tag | Beschreibung |\n|---|---|\n| v0.1-pre-cms | Sauberer Stand vor CMS Integration |\n| v0.2-pre-cleanup | Stand vor CSS Cleanup |\n| v0.3-content-externalized | Alle Inhalte in JSON |\n| v0.4-media-support | Video/Audio/Bild Support |\n| v0.5-theme-switcher | DaisyUI Theme Switcher |\n| v0.6-contact-form | Kontaktformular |\n| v0.7-pre-sveltia | Stand vor Sveltia CMS |\n| v1.0 | Produktionsreifer Stand |\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchhex%2Fandi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchhex%2Fandi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchhex%2Fandi/lists"}