- Portfolio – cyprien.in
- Resume – cyprien.in/resume.html
Built with Vite, React, TypeScript, Tailwind CSS, and shadcn/ui.
npm install
npm run dev # start dev server (http://localhost:5173)
npm run build # production build → dist/
npm run preview # serve the production build locallyResume PDF variants are defined in src/data/pdfVariants.json.
To add a new shareable variant, place the PDF in public/resumes/ and add an entry like:
{ "slug": "ml", "label": "ML-focused", "file": "ccd97-resume-ml.pdf" }npm run dev and npm run build automatically generate clean resume pages and update public/sitemap.xml.
Use the generated /resume/<slug> URL when sharing on LinkedIn, Facebook, or other social previews.
src/
├── components/
│ ├── portfolio/ # portfolio page components
│ ├── resume/ # resume page components
│ └── ui/ # shadcn/ui primitives
├── data/ # fallback JSON used when remote APIs are unreachable
├── lib/ # utilities, fetchers, formatters
├── pages/ # PortfolioPage, ResumePage
├── types/ # shared TypeScript types
├── main.tsx # entry for index.html
├── resume.tsx # entry for resume.html
└── index.css # Tailwind + CSS variables
Deployed automatically to GitHub Pages via .github/workflows/deploy.yml on every push to master.
One-time setup: in the repo's Settings → Pages, set Source to GitHub Actions and configure the custom domain as cyprien.in.