Skip to content
← All posts

How I rebuilt my portfolio with MDX and AI code assistants

How I rebuilt my portfolio with MDX and AI code assistants

My portfolio site had a problem: it was 90% fake. Six project cards referencing tools that didn't exist. A generic bio. A tools page I copied from somewhere. The infrastructure was real — Next.js, AWS CDK, CloudFront, GitHub Actions — but the content was fiction.

What I actually built

I have real projects. A tool that turns codebases into documentary audiobooks. A hybrid search engine for legal documents. Client sites that are live and running. None of them were on my portfolio.

So I tore it down and rebuilt it.

The approach

MDX content collections. Each project gets its own .mdx file with typed frontmatter (title, tags, status, links) and free-form content below. The site reads these files at build time and generates static pages. No CMS, no database, no API.

content/
  projects/
    repo-story.mdx
    finsetdesign.mdx
    mbox-parser.mdx
    ...

Adding a new project means writing a markdown file. The build handles the rest.

What worked

The MDX + Next.js static export pipeline is clean. next-mdx-remote compiles MDX at build time, gray-matter parses frontmatter for index pages, and output: "export" generates plain HTML files. CloudFront serves them. Zero runtime.

Tag-based filtering on the projects page works client-side with a single useState hook. No server needed.

What I'd do differently

I'd start with the content, not the infrastructure. I spent time on MDX utility functions, test frameworks, and build pipelines before writing the actual project descriptions. The content is what makes the site worth visiting. The infrastructure is interchangeable.