Personal site (Next.js) with GitHub Pages and an optional container image on GHCR.
cd personal-site
npm install
cp .env.example .env.local # optional
npm run devOr from the repo root: make site-install && make site-dev.
On every pull request and push to main or master, Actions runs:
- Lint —
npm run lint(TypeScripttsc --noEmit) - Tests —
npm run test(Vitest) - Build —
next build(static export) - Docker —
docker buildto confirm the image still builds
From the repo root: make site-lint, make site-test, make site-build.
This repo’s default branch is master. Pushing there (or to main if you rename later) runs the same checks, then:
- GitHub Pages — static
out/from the workflow - GHCR — Docker image pushed to
ghcr.io/<github-username>/<repo>/personal-site
tags:latestand short Git SHA
Pages: Settings → Pages → source GitHub Actions.
Container: open the repo’s Packages (or your profile → Packages), find personal-site, adjust visibility if you want it public. Pull example:
docker pull ghcr.io/danielsmithdevelopment/danielsmithdevelopment.github.io/personal-site:latest
docker run --rm -p 8080:80 ghcr.io/danielsmithdevelopment/danielsmithdevelopment.github.io/personal-site:latest
# site at http://localhost:8080(Replace owner/repo with your GitHub username and repository name if different.)
All site source lives under personal-site/ (Dockerfile, tests, Next app). The repo root holds Makefile, workflows, and this README.