Personal portfolio and technical blog for Felix Berinde.
Built with Next.js and Nextra (blog theme). Content is written in Markdown and MDX. The site is deployed on Vercel.
- Next.js 14 — React framework with static generation
- Nextra 2 — MDX pages, blog layout, and navigation
- Vercel Analytics & Speed Insights — traffic and performance
- Node.js 24
Requires Node.js 24.x (see .nvmrc).
npm install
npm run devOpen http://localhost:3000.
npm run build
npm startThe build step generates the RSS feed, sitemap, and posts index before compiling the Next.js app.
pages/
index.mdx # Home / About
resume.mdx # Resume and capstone downloads
contact.mdx # Contact page
privacy.mdx # Privacy policy
terms.mdx # Terms of service
posts/ # Blog posts (.md / .mdx)
components/ # React components (projects, PostList, etc.)
scripts/ # Build-time generators
public/ # Static assets (images, PDFs, ads.txt, robots.txt)
data/ # Generated posts-index.json (created at build)
styles/main.css # Custom styles
theme.config.js # Nextra theme (footer, etc.)
- Create a new
.mdor.mdxfile inpages/posts/ - Add frontmatter:
---
title: My Post Title
date: 2026/06/16
description: A short summary for the posts list and SEO.
tag: dev, next.js
author: Felix Berinde
---- Run
npm run devornpm run build— the post is picked up automatically for the posts page, RSS feed, and sitemap.
Posts are listed on /posts via components/PostList.js, which reads from data/posts-index.json generated at build time.
| Script | Output |
|---|---|
scripts/gen-rss.js |
public/feed.xml |
scripts/gen-sitemap.js |
public/sitemap.xml |
scripts/gen-posts-index.js |
data/posts-index.json |
Site URL and metadata are configured in scripts/site-config.js.
The site deploys to Vercel on push to main. Ensure the Vercel project uses Node.js 24.x.
Build command (default):
npm run buildMIT