Back to Portfolio
Portfolio Website Architecture Preview
Web • Architecture • Performance Live Production

Portfolio Website Architecture

The minimalist personal portfolio you are currently browsing — engineered from the ground up with vanilla HTML5, CSS3, JavaScript, an Express backend, and live GitHub sync.

Role: Full-Stack Designer & Developer
Speed: 100/100 Lighthouse Performance
99+
Lighthouse Score

Near-perfect rating across Performance, SEO, and Best Practices.

< 0.6s
First Contentful Paint

Zero external runtime dependencies blocking the critical render path.

0 KB
Framework Overhead

Engineered purely with standard DOM APIs, CSS tokens, and vanilla ES modules.

60 FPS
LERP Cursor Motion

Decoupled requestAnimationFrame interpolation with zero render stutter.

Technologies & Libraries

HTML5 Modern CSS3 Vanilla JavaScript Node.js Express REST GitHub REST API

Engineering Philosophy

Modern web development frequently suffers from massive framework overhead and bloated bundler pipelines for simple marketing sites. This portfolio was created under the discipline of modern vanilla standards: utilizing native CSS variables, fluid clamping typography, native custom cursor physics, and semantic markup to deliver near-instant loading times.

System Flow & Service Boundaries

Stage 1
Client Entry
Vanilla HTML5 loads synchronously with zero theme flash
Stage 2
Cursor & Theme
LERP loop activates and local theme token mounts
Stage 3
Express API
Hydrates visible project records dynamically from Render backend
Stage 4
GitHub Sync
Background webhook refreshes repo stars, commits & metadata

Key Implementations

Lerp Cursor Interpolation

Dual ring-and-dot custom cursor with linear interpolation (LERP), hover scale transformations, and intelligent touch detection fallback.

Persistent Theme Engine

Seamless zero-flash dark/light mode toggle with localStorage cache and OS-level prefers-color-scheme listener.

Dynamic CMS Backend

Decoupled backend API running on Render that manages visible project records, contact mailers, and admin toggles.

Zero Framework Footprint

No heavy bundler dependencies, transpilers, or virtual DOM overhead — just pure, hyper-optimized standard web APIs.

Technical Implementation: Cursor LERP Engine

Achieving buttery 60 FPS cursor motion requires decoupled tracking: the inner dot tracks coordinates immediately while the outer trailing ring smoothly catches up via linear interpolation:

cursor.js
// Smooth Linear Interpolation (LERP)
let rx = 0, ry = 0, mx = 0, my = 0;

document.addEventListener('mousemove', (e) => {
  mx = e.clientX;
  my = e.clientY;
  dot.style.left = mx + 'px';
  dot.style.top  = my + 'px';
}, { passive: true });

(function lerp() {
  rx += (mx - rx) * 0.12;
  ry += (my - ry) * 0.12;
  ring.style.left = rx + 'px';
  ring.style.top  = ry + 'px';
  requestAnimationFrame(lerp);
})();

Engineering Challenges & Solutions

Challenge 1: Flash of Unstyled Theme (FOUT)

In dark/light mode toggles, rendering before localStorage resolution creates an eye-straining white flicker on load. Solved by inlining theme detection in the document <head> before CSS rendering, guaranteeing zero theme flashing.

Challenge 2: Synchronous Cursor Visibility

When clicking internal links into case study sub-pages, asynchronous script execution could cause the native cursor to briefly appear before hiding. Fixed by bundling synchronous cursor mounting directly into `case-nav.js` with instant stylesheet binding.

Previous Case Study ReadLib Portfolio Back to Portfolio