Personal portfolio site built with Astro and deployed to Vercel.
- Node.js 18 or later
- npm
# Install dependencies
npm install
# Start the dev server
npm run devOpen http://localhost:4321 to view the site.
npm run buildThis generates a static site in the dist/ directory.
src/
components/ → Astro and React components (WritingSamples, PortfolioFeed, etc.)
content/
portfolio/ → Case study posts (.mdx)
posts/ → Blog posts (.mdx)
layouts/ → Base layout
pages/
├── index.astro → Home page
├── about.astro → About page
├── resume.astro → Resume/CV
├── portfolio/ → Portfolio listing + dynamic routes
├── writing-samples.astro → Filterable writing samples grid
└── posts/ → Blog listing + dynamic routes
styles/ → Global CSS
public/
├── images/ → Screenshots and thumbnails
└── downloads/ → PDF writing samples and resume
Portfolio posts: Add an .mdx file in src/content/portfolio/.
Writing samples: Add entries to the samples array in src/components/WritingSamples.jsx. Place PDFs in public/downloads/ and thumbnails in public/images/samples/.
Blog posts: Add .mdx files in src/content/posts/.
Pushing to main triggers automatic deployment on Vercel. Astro is auto-detected — no extra config needed.
The following files need to be added manually:
- Screenshot images in
public/images/portfolio/andpublic/images/samples/(seepublic/images/README.md) - PDF writing samples in
public/downloads/(seepublic/downloads/README.md) - Resume PDF at
public/downloads/favour-kelvin-cv.pdf