Personal Website
This site is built on Next.js 15 with the App Router and TypeScript. All pages are server components and prerendered at build time — there is no database and no client-side data fetching. Styling is handled exclusively through CSS Modules for scoped, collision-free styles, with design tokens defined as CSS custom properties in a single globals.css. The Inter typeface is loaded via next/font and Vercel Analytics is integrated at the root layout.
Content Architecture
Content lives in two places depending on its type. The writing section (/writing) is the only markdown-driven part of the site: posts are authored as .md files with YAML frontmatter, parsed by gray-matter, and rendered via remark. A module-level in-memory cache in src/lib/content.ts indexes all frontmatter on startup and reads full content bodies on demand.
All other content — the portfolio, about page, and navigation — is authored directly as static JSX. No CMS, no markdown pipeline, no dangerouslySetInnerHTML. Portfolio section metadata (titles, slugs, descriptions, child relationships) is centralized in src/data/portfolio-sections.ts and consumed by a shared PortfolioPage wrapper component that handles breadcrumbs, pagination, and layout consistently across all sections.
Images
Project screenshots are compressed to WebP and served through the Next.js Image component, which handles lazy loading and responsive srcset generation. The sizes prop is tuned to the 860px prose content width so the browser requests appropriately-sized variants at each breakpoint.
Deployment
The site is deployed to Vercel on every merge to master, with a separate nightly build triggered via GitHub Actions to keep prerendered content fresh. All work happens on feature branches and lands through pull requests — master is never committed to directly.
Design Goals
Lightweight and content-first. I wanted a site I could extend without fighting a framework or a CMS — adding a new portfolio page means creating a page.tsx file and a record in portfolio-sections.ts. The site is live at paulaklimas.com and serves as both a writing outlet and a working demonstration of my frontend architecture choices.