Turn a résumé into a unique, animated personal site in seconds — generated, never templated.
Aurora reads a CV and composes a one-of-a-kind website: palette, typography, layout shape and motion are all chosen by a seeded Design DNA engine and verified for contrast, then rendered live. Same person → same site (it feels authored); different people → genuinely different ones (no clone templates).
cd aurora
npm install # already installed if you scaffolded here
cp .env.example .env.local # optional — needed only to parse real PDFs
npm run dev # http://localhost:3000 (Next.js 16 / Turbopack)/— the marketing landing (WebGL hero, scroll motion)./forge— the studio. It opens empty (upload-first): choose a source (type a GitHub username or upload a PDF) to begin. Then pick a vibe/archetype, Regenerate to re-roll the colorway, watch the whole site re-theme instantly, and Publish to get a shareable link./u/<slug>— a published site (server-rendered from the store, with a themed social share card at/u/<slug>/opengraph-image).
No API key? Everything still runs. GitHub import needs nothing; PDF upload falls back to the sample; publishing uses a local JSON store. The whole loop is demoable with zero setup.
Docs for contributors / future sessions: CLAUDE.md,
docs/ARCHITECTURE.md, docs/DECISIONS.md.
| Variable | Purpose |
|---|---|
ANTHROPIC_API_KEY |
Parse real PDFs into structured data (+ headline/summary). Without it, the sample is used. |
AURORA_PARSE_MODEL |
Optional. Extraction model (default claude-sonnet-4-6). |
PDF upload ─► unpdf ─┐
GitHub user ─────────┼─► ResumeData (zod) ─► seed ─► Design DNA engine ─► PortfolioRenderer (live preview)
sample ──────────────┘ (archetype × palette × │
type × motion × shape, └─► Publish ─► store ─► /u/[slug]
WCAG contrast repaired) + OG share card (next/og)
src/lib/design/dna.ts— the engine: composes a full design from a seed.src/lib/design/color.ts— WCAG luminance/contrast + automatic foreground repair.src/lib/design/{palettes,typography,motion,random}.ts— curated, vibe-tagged tokens.src/lib/resume/{schema,parse,github,sample}.ts— normalized schema, LLM parser, GitHub import, demo seed.src/lib/store/— persistence adapter (local JSON now, Supabase when configured).src/components/portfolio/PortfolioRenderer.tsx— one renderer, every site.src/components/forge/ForgeStudio.tsx— the interactive studio + live preview.src/app/api/{generate,import/github,publish}/route.ts— the source + publish pipelines.src/app/u/[slug]/{page,opengraph-image}.tsx— public site + dynamic share card.
Next.js 16 (App Router, Turbopack) · React 19 · Tailwind v4 · Framer Motion ·
React Three Fiber / drei (WebGL) · GSAP · Zod · Anthropic Claude API · unpdf ·
Supabase JS · next/og.
- Shipped — the Design DNA engine, the Forge studio with live re-theming, PDF + GitHub sources,
publish flow, public
/u/[slug]pages, and dynamic OG share cards (all run with zero setup). - Next (Phase 3) — Supabase auth/accounts,
yourname.aurora.sitesubdomains (Next 16proxy.ts), one-click multilingual (EN/DE/RU/HY), analytics, structurally distinct archetype layouts, and an AI intro/cover-letter module. Seedocs/DECISIONS.md.