This repository contains the source for petrivan.com, my personal website and blog.
The site uses SvelteKit, Svelte 5, TypeScript, Tailwind CSS, mdsvex, and
@sveltejs/enhanced-img. It is prerendered as static files and published to
GitHub Pages.
src/
├── lib/
│ ├── assets/ build-processed images, icons, fonts, and media
│ ├── components/ reusable interface components
│ └── content/ mdsvex posts, project records, and content queries
└── routes/ pages and prerendered endpoints
resume/ Typst résumé source, fonts, and local assets
scripts/ generated-asset and repository utilities
static/ public files copied directly into the build
tests/e2e/ Playwright browser tests
tests/visual/ scheduled visual-review captures
Project pages are typed content records. Blog posts are .svx files with
title, description, and ISO date frontmatter.
The project requires Node.js 22.12 or newer and pnpm 10.17.1. Install the Playwright engines before running the complete validation suite. Typst 0.14.2 is needed only when rebuilding the résumé.
pnpm install
pnpm exec playwright install chromium firefox webkit
pnpm run devBy default, the development server is available at http://localhost:1420.
| Command | Purpose |
|---|---|
pnpm run dev |
Start the local development server |
pnpm run lint |
Check formatting and lint the source |
pnpm run check |
Run Svelte and TypeScript checks |
pnpm run test |
Run unit tests once |
pnpm run test:e2e |
Build and run desktop and mobile browser tests |
pnpm run test:visual |
Build and capture desktop/mobile screenshots for manual review |
pnpm run build |
Generate public assets and write the site to build/ |
pnpm run preview |
Serve the production build locally |
pnpm run validate |
Run the complete local verification suite |
pnpm run resume:build |
Rebuild the downloadable résumé with Typst 0.14.2 |
pnpm run build, pnpm run test:e2e, and pnpm run validate regenerate the
social card and canonical public portrait copy before building the site. The
source images and generation script are tracked for reproducible CI builds.
The résumé PDF is generated separately. Run pnpm run resume:build after
changing its Typst source, fonts, or local assets, then inspect the result before
committing it.
The Visual review workflow runs weekly
and on demand. It captures representative pages in light and dark themes at
desktop and mobile widths, then uploads the screenshots as a GitHub Actions
artifact for manual comparison. Run pnpm run test:visual to create the same
captures locally under test-results/visual-review/.
Pushes to main are validated and deployed to GitHub Pages by
.github/workflows/ci.yml. The workflow publishes
the static build/ output with the official Pages actions and can also be run
manually. static/CNAME defines the custom domain, while
static/robots.txt advertises the generated sitemap.
Source code is available under the MIT License. Original prose, photographs, and other original site content are available under CC BY 4.0, unless a file says otherwise. Third-party assets retain their own licenses; see THIRD_PARTY_NOTICES.md.
