A self-hostable, YAML-driven portfolio site with pluggable visual variants.
You write a single portfolio.yml describing who you are and what you've done. The platform validates it against a typed schema and renders it through your chosen variant β a styled React tree that decides typography, color, motion, and layout. Switching variants changes the look without touching content. Editing the YAML changes content without touching code.
portfolio.yml ββ @portfolio/schema ββ @portfolio/variant-* ββ apps/web ββ browser
(validate) (render) (host)
Designed for engineers, makers, photographers, writers, and academics who want to own their portfolio without learning a templating engine.
Live demo: keyurgolani.name
The same portfolio.yml rendered through two variants β Editorial and Kinetic Cosmos. Switch the look without touching content.
πΈ See the full visual showcase Β»
pnpm install
pnpm devVisit http://localhost:3000. Edit portfolio.yml at the repo root and the page hot-reloads.
To run in Docker (production):
docker compose up --buildSee docs/getting-started.md for the full walkthrough.
- 28 section kinds β hero, lede, experience, projects, skills, GitHub, gallery, testimonials, publications, talks, awards, and more. See docs/features.md.
- 5 theme modes β
light,dark,bright(paper-white),black(AMOLED), andsystem(follows OS). - Per-variant color schemes and typography presets β editorial ships 3 schemes and 2 type pairings.
- GitHub integration β pinned repos, recently-active list, contribution heatmap, language breakdown. Uses GraphQL with a token, REST without.
- Print stylesheet, RSS feed, structured data, OG image generation β opt-in per variant via the
capabilitiesflag. - Drift gates keep the schema, kit catalog, and skill references in sync (
pnpm check:skills). - AI-assisted authoring + variant development via two skills under skills/.
apps/
web/ Next.js host (routes, data loading, SEO)
packages/
schema/ Zod schemas, 28 section kinds, theme/motion enums
kit/ Shared utilities (theme provider, GitHub fetcher,
format helpers, SEO, spatial primitives)
variant-editorial/ First variant: typographic editorial spread
variant-template/ Scaffold for new variants
docs/
architecture.md How the pieces fit
getting-started.md Install, run, edit
authoring.md Writing portfolio.yml
variants.md Building a variant
deployment.md Production deployment
features.md Feature catalog
skills/ AI agent skills
(portfolio-author, variant-developer)
portfolio.yml Your portfolio
portfolio.example.yml Fully-populated example
| For | Read |
|---|---|
| First-time visitors | docs/getting-started.md |
| Authors writing portfolio.yml | docs/authoring.md |
| Developers building variants | docs/variants.md |
| Architects understanding internals | docs/architecture.md |
| Operators deploying to production | docs/deployment.md |
| Looking for a feature | docs/features.md |
| AI agents authoring portfolios | skills/portfolio-author/ |
| AI agents building variants | skills/variant-developer/ |
See CONTRIBUTING.md for development setup, coding conventions, and the drift gates that must stay green.
MIT.

