mark@arch:~/projects/markart25.github.io
← cd ~/projects markart25.github.io cover

markart25/markart25.github.io

CSS 2 commits 0 stars updated 10 Jun 2026
view on github ↗

README.md — rendered from the repo

markfolio

My project portfolio, built with Astro + React, deployed on GitHub Pages. It pulls every public repo from my GitHub at build time and gives each one its own page — and it themes itself from the wallpaper, pywal-style.

How it works

Run it locally

npm install
npm run dev        # extracts the palette, then starts astro dev

Heads up: npm install may fail behind SSL-intercepting filters (Securly etc.). Do the first install at home or on a hotspot — after that, builds run fine offline thanks to the snapshot fallback.

Change the wallpaper

Drop any image at public/wallpaper.jpg (or .png / .jpeg, same name) and rebuild. That's it — accent colours, background tint, and favicon all re-derive from it.

Make it yours

Everything user-facing lives in src/config.ts: username, tagline, tech-stack icons (skillicons.dev ids), and the repo exclude list.

Per-repo blurbs live in src/content/notes/<repo>.md — create a file named after any repo and it appears as a "field notes" callout on that repo's page. Delete one to remove it. Repos without a notes file still get a full auto-generated page.

Deploy to GitHub Pages

  1. Create a repo — name it <username>.github.io to serve at the root URL, or anything else to serve at /<repo>/ (the base path is detected automatically).
  2. Push this folder to main.
  3. In the repo: Settings → Pages → Source → GitHub Actions.
  4. Done. Every push and every daily cron run redeploys with fresh repo data.

Stack

Astro 5 (static output) · React 19 island for the sortable grid (commits ⇄ stars) · no CSS framework, just custom properties generated from the wallpaper · JetBrains Mono + Inter, self-hosted via Fontsource.