Personal Website

October 10, 2026 (2w ago)

Stack: Next.js 14, React, TypeScript, Tailwind CSS, shadcn/ui, Framer Motion, Shiki, GitHub Actions, semantic-release · Repo: Axeloooo/Portfolio

Problem

A portfolio is mostly content that changes often, around a small amount of code that should not. The goal was a site where adding a job, a project or a skill is an edit to one typed data file, and where CI lints and builds every pull request and releases come from commit titles.

Architecture diagram

  src/data/resume.tsx  (DATA: jobs, projects, skills, education, contact)
      |
      v
  app/page.tsx --> ProjectCard, ResumeCard, HackathonCard, BlurFade
 
  content/*.mdx  (Markdown posts)
      |
      v
  data/blog.ts: gray-matter --> remark --> rehype-pretty-code (Shiki)
      |
      v
  blog list page + blog/[slug] pages  (static, generateStaticParams)
 
  app/layout.tsx wraps both: font, theme provider, dock navbar,
                             favicons, Vercel Analytics + Speed Insights
 
  pull request to devel / main --> ci.yml: install, lint, build
  push to main                 --> release.yml: semantic-release

There is no backend, database or API route. DATA holds personal info, skills, work, research, leadership, education, projects, certificates and social links. Blog posts are parsed at build time and statically generated.

Key decisions

Challenges

Results

Links