SWP Freelancer Portfolio is a complete portfolio site for independent designers, art directors and small studios - not a single-page template. It ships twelve routes covering case studies, services, a journal, testimonials, an FAQ and a contact page, and builds to 27 static pages from the demo content. It is written in Astro components, plain CSS and vanilla JavaScript. No React, no Vue, no Tailwind, no icon library. Five dependencies in total.
What's included
Then a bulleted list:
- Case studies with results figures, client facts and a next-project link, driven by a content collection
- A services section with its own index and detail pages
- A journal with categories, tags, reading time, an RSS feed and BlogPosting structured data
- A filterable work grid built from the categories actually in use
- Testimonials, an awards list, a process timeline and an accessible FAQ
- A contact page with a real, labelled form ready to connect to Formspree, Netlify Forms, Web3Forms or your own endpoint
- Privacy and terms templates, and a custom 404
Fast by construction
Static output, no hydration, no framework runtime. The homepage ships about 5 KB of JavaScript - roughly 2 KB over the wire - split across small scripts that each load only where they are used. One 36 KB stylesheet, 7 KB gzipped. Two self-hosted variable font files cover every weight, so no request ever leaves your domain. There are no third-party requests at all: no analytics, no font CDN, no embeds.
Accessible, and it stays that way without JavaScript
Skip link, visible focus rings, one H1 per page, no skipped heading levels, and a palette verified at 4.5:1 for body text and 3:1 for large text. The FAQ is a native details accordion, so exclusive open and close, keyboard support and correct semantics come from the browser. The nav drawer handles Escape and focus return, and degrades to a plain visible list with scripting off. Reduced motion is respected throughout, and the reveal animation is opt-in so content can never get stuck invisible.
Yours to change
Site name, role, contact details, social links, logos and SEO defaults all live in one config file. Colours, type and spacing are CSS custom properties in one tokens file. Projects, services and posts are Markdown with typed frontmatter schemas and draft support. Everything that repeats - navigation, testimonials, process steps, awards, FAQ entries - is a typed TypeScript array.
Included assets
A 29-icon SVG sprite, five pieces of inline SVG artwork and a signature mark, all drawn for this theme. Fourteen CC0 photographs stored locally and pre-optimised as WebP; nothing is hotlinked. Every image is credited with its source in CREDITS.md.
MIT licensed. Fonts are SIL OFL 1.1 and photographs are CC0, both documented separately.






