← Back to overview

πŸ“‚ Portfolio - GitHub Explorer

Een moderne portfolio-website met een subtiele retro-vibe die automatisch al mijn openbare GitHub repositories ophaalt en de bijbehorende documentatie direct op de site toont.

Astro TypeScript Bootstrap Cloudflare

πŸ“Έ Preview

Portfolio Preview

🌐 Live Demo

Bekijk mijn portfolio hier!

De website is een overzicht van al mijn codeer-projecten, automatisch opgebouwd uit mijn GitHub repositories.

🌟 Features

  • Automatisch uit GitHub: Elke build haalt al mijn openbare repositories en hun README's op en maakt er pagina's van.
  • EΓ©n pagina per project: /project/<naam> toont de README van dat project, met een eigen titel en beschrijving voor Google.
  • SEO van bij de basis: Elke pagina is gewone HTML met canonical URL, Open Graph en structured data; plus een automatische sitemap.xml.
  • Subtiele Retro Aesthetic: Een modern dark theme met neon-groene accenten en retro typografie voor een unieke "hacker-lite" look.
  • Smart Asset Handling: Relatieve afbeeldingen en links in README's wijzen automatisch naar de juiste plek op GitHub.
  • Cloudflare Middleware Analytics: Gebruikt Cloudflare Pages Middleware om bezoekersstatistieken (hits, land, user-agent) veilig te loggen naar een externe API zonder de laadtijd te beΓ―nvloeden.
  • Snel: Geen API-calls in de browser; bijna geen JavaScript (enkel de typewriter en tooltips).
  • Responsive Design: Volledig geoptimaliseerd voor desktop, tablet en mobiel.

πŸš€ TechnologieΓ«n

  • Astro: Bouwt de site tijdens de build om naar statische HTML-pagina's.
  • TypeScript: Voor het ophalen en verwerken van de GitHub-data.
  • Bootstrap 5 & Custom CSS: Krachtige grid-layout gecombineerd met een op maat gemaakt retro-thema.
  • Bootstrap Icons: Gebruik van de officiΓ«le Bootstrap iconenset voor een consistente UI.
  • Marked.js + DOMPurify: Zet README's om naar veilige HTML.
  • Cloudflare Pages & Middleware: Hosting platform met serverless middleware voor analytics.

πŸ“ Project Structuur

β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── Base.astro          # Layout + de ENIGE plek voor <head> (titel, beschrijving, SEO)
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.astro         # Homepage met intro en projectkaarten
β”‚   β”‚   β”œβ”€β”€ about.astro         # "About me"-pagina
β”‚   β”‚   β”œβ”€β”€ project/[name].astro # EΓ©n pagina per project
β”‚   β”‚   β”œβ”€β”€ 404.astro           # Pagina voor onbestaande URL's
β”‚   β”‚   └── sitemap.xml.ts      # /sitemap.xml
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ ProjectCard.astro   # Kaart van één project
β”‚   β”‚   └── Typewriter.astro    # Typ-animatie van de intro
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ site.ts             # Naam, teksten en links van de site
β”‚   β”‚   β”œβ”€β”€ about.ts            # Teksten van de "About me"-pagina (ervaring, opleiding, skills)
β”‚   β”‚   β”œβ”€β”€ photo.ts            # Profielfoto (bron: src/assets/kobe-erauw.jpg)
β”‚   β”‚   β”œβ”€β”€ github.ts           # Repositories + README's ophalen tijdens de build
β”‚   β”‚   └── markdown.ts         # README β†’ veilige HTML
β”‚   └── styles/retro.css        # Custom retro-thema
β”œβ”€β”€ functions/_middleware.ts    # Cloudflare analytics
β”œβ”€β”€ .github/workflows/rebuild.yml # Wekelijkse rebuild
└── README.md

βš™οΈ Hoe het werkt

  1. Build: astro build haalt via de GitHub API alle repositories van kobe-erauw op, plus de README van elk project.
  2. Pagina's: Voor elk project wordt dist/project/<naam>.html gemaakt, plus de homepage, een 404-pagina en sitemap.xml. Cloudflare Pages serveert die als /project/<naam>.
  3. Welke projecten?: Zet [hidden] in de GitHub-beschrijving van een repo om hem te verbergen, en [image: bestand.png] om een afbeelding uit de assets/ map van die repo te tonen.
  4. Up-to-date blijven: Omdat alles tijdens de build gebeurt, verschijnen nieuwe projecten en sterren pas na een nieuwe build. .github/workflows/rebuild.yml start daarom elke maandag een build (zie de uitleg in dat bestand om het in te stellen).
  5. GitHub token: Zet GITHUB_TOKEN als environment variable in Cloudflare Pages, anders kan de build tegen de rate limit van GitHub aanlopen. Lukt het ophalen niet, dan faalt de build en blijft de vorige versie online.

πŸ”§ Setup & Installatie

  1. Clone de repository
git clone https://github.com/Kobe-Erauw/portfolio
cd portfolio
  1. Installeer dependencies (Node 22.12 of nieuwer)
npm install
  1. Run development server
npm run dev
  1. Build voor productie (controleert eerst de types)
npm run build

πŸ“ Licentie

Dit project is open source en beschikbaar onder de MIT License.