Jacky.Fan
Personal portfolio built with Next.js 16, SCSS BEM, and Payload CMS — self-hosted on Raspberry Pi 5.
A portfolio built from scratch
The site you are browsing right now — a warm, editorial portfolio powered by a custom design system and a self-hosted CMS.
After iterating through several versions, the current site is built on Next.js 16 with a custom SCSS BEM architecture — modular partials, CSS custom properties, and a warm editorial palette that feels intentional rather than assembled.
Pages are CMS-driven through Payload CMS, with live preview, draft/publish workflow, and automatic cache revalidation. The CMS and MongoDB run on a Raspberry Pi 5 via Docker Compose, while the frontend deploys to Cloudflare Pages for instant global delivery.
Motion is handled with care: Framer Motion for reveal animations, the View Transition API for page navigation, and Locomotive Scroll for parallax — all respecting reduced-motion preferences.
A tour of the portfolio
From the landing hero to project detail pages — every section designed with intention.
Key Features
The details that make the experience feel polished.
Custom Design System
Modular SCSS partials with BEM naming, CSS custom properties, and a warm editorial palette. Every component follows a consistent visual language.
Light & Dark Mode
Full theme support with manual toggle and system preference detection. Carefully crafted dark tokens meet WCAG 2.2 contrast requirements.
Smooth Animations
Framer Motion reveal animations, View Transition API for page navigation, and Locomotive Scroll for parallax — all with reduced-motion support.
Fully Responsive
Hand-crafted breakpoints with a full-screen mobile menu, adaptive typography, and stacked grids. Every layout decision is intentional.
CMS-Driven Content
All pages managed through Payload CMS with live preview, draft/publish workflow, and automatic frontend cache revalidation on content changes.
Self-Hosted Infrastructure
CMS and MongoDB run on a Raspberry Pi 5 via Docker Compose. Full ownership from database to server — no third-party platforms, no vendor lock-in.
Built with
A modern frontend stack with a self-hosted backend.
Like what you see?
This site keeps evolving — always open to feedback and collaboration.