About
No description available

Tags
No tags available

Languages
Astro 44%, JavaScript 20%, Svelte 20%, TypeScript 12%, CSS 4%

website

personal portfolio site for sami fouad, built with Astro 5 and deployed on Cloudflare Pages.

overview

this site showcases my projects, writing, and recent development activity. it dynamically pulls data from GitHub repositories to stay current without manual updates.

main sections:

  • projects - GitHub repos with live READMEs, language stats, and topics
  • blog - posts written in MDX with full markdown support
  • changelog - recent commits across all tracked repos, with hashtag filtering

how it works

GitHub data pipeline

the build process fetches fresh data from GitHub before Astro compiles:

  • repository metadata (README, languages, topics) → public/data/
  • recent commits from last 14 days → public/changelog/
  • configured via repos.json in the root

automatic rebuilds

the portfolio stays current through a three-tier rebuild system:

  1. hourly cron (Cloudflare Worker) - catches all changes
  2. repos.json edits (GitHub Action) - instant rebuild when adding/removing repos
  3. per-repo triggers (GitHub Actions) - each tracked repo triggers rebuild on push

PageSpeed metrics

post-deploy webhook collects Google PageSpeed Insights scores and stores them in Cloudflare D1. historical metrics are displayed on the changelog page.

unified tagging

tags connect content across the site:

  • projects use GitHub topics
  • blog posts use frontmatter tags
  • commits use #hashtags

all content with the same tag appears together on tag pages.

tech stack

  • Astro 5 - SSR with Cloudflare adapter
  • Svelte 5 + React 18 - interactive components
  • Tailwind 4 - styling
  • Cloudflare D1 - metrics storage
  • GitHub API - data source

built with Astro. powered by Cloudflare. data from GitHub.