Back
PORTFOLIO
Case Study · 2026

My Portfolio
Website.

A zero-framework personal portfolio — built from scratch with pure HTML, CSS, and JavaScript — featuring glassmorphism, 6 live themes, SaaS product showcase, and custom animations.

6Themes
0Frameworks
LiveStatus
01

Overview

A personal brand site that doubles as proof-of-skill — every design decision is a deliberate showcase of frontend capability.

🎯
The Goal

Build a portfolio that doesn't look like a template — one that demonstrates real design and frontend skill while presenting projects, experience, and a live SaaS product professionally.

👤
Target Audience

Recruiters, potential clients, and fellow developers who want to understand who Evan is, what he builds, and whether he's capable of going beyond tutorial-level work.

Design Direction

Dark glassmorphism with purple as the signature accent. Clean spatial hierarchy, generous white space, and purposeful micro-animations — nothing decorative without function.

🚀
Key Differentiator

A dedicated SaaS Products section for WritexNova — a real commercial product with Stripe payments — sets this apart from every standard projects portfolio page.

02

Problem & Solution

Most portfolios fail because they look identical. The challenge was to build something genuinely personal and memorable.

The Problem

Template portfolios blend into the noise

Recruiters see hundreds of Bootstrap and Tailwind portfolios daily. If yours looks the same, it communicates that you can follow instructions — not that you can create original things.

  • Identical layouts across thousands of developers
  • No real demonstration of CSS architecture skill
  • Hard to customize without fighting the framework
  • Side projects only — no real commercial products
The Solution

Build every line of CSS by hand

Zero frameworks. Every component designed and coded from scratch — the portfolio itself is proof of the skill it claims to demonstrate.

  • 6 switchable themes via CSS custom properties
  • Hand-coded glassmorphism + 3D card effects
  • Custom cursor, typing animation, scroll reveals
  • Live SaaS product section, not just demos
03

Tech Stack

Deliberately chosen for full control — no abstraction layers between the code and the browser.

🌐 HTML5
Semantic markup, accessible structure, SEO-optimized headings and meta
Markup
🎨 CSS3
Custom properties, glassmorphism, grid, flexbox, keyframe animations, backdrop-filter
Styling
Vanilla JS
Theme switcher, typing animation, IntersectionObserver reveals, custom cursor
Behaviour
🐙 GitHub Pages
Free static hosting, auto-deploy on git push, CNAME support for custom domain
Hosting
🌍 Namecheap
CNAME record → shahriarevan.com routed to GitHub Pages infrastructure
Domain
📧 Formspree
Serverless contact form backend — email delivery without a server
Forms
04

Features Built

Every feature was designed to serve a purpose — showcase skill, improve UX, or present content more effectively.

01
6-Theme System
Purple, Blue, Green, Orange, Rose, Cyan — all driven by CSS variables. Full palette switch in one click.
02
Glassmorphism Cards
Backdrop blur, semi-transparent backgrounds, 3D hover tilt, and gradient glow — all pure CSS.
03
Typing Animation
Hero types and deletes role titles in a loop — creating immediate engagement on arrival.
04
Custom Cursor
Dot + ring cursor with spring delay and hover expand — a premium signature detail.
05
Scroll Reveals
IntersectionObserver staggered fade-ups on every section as you scroll through.
06
SaaS Products Section
Dedicated section for WritexNova — a live, monetized product separate from demo projects.
07
Dark / Light Mode
Full dark and light support across all 6 themes — toggled and persisted across visits.
08
Expand / Collapse
Featured items shown by default, more hidden behind View More — clean by default, deep on demand.
09
Fully Responsive
320px mobile to 4K desktop — hamburger nav, grid reflow, touch-friendly throughout.
05

Challenges Solved

No framework means solving problems frameworks handle automatically. Here's what came up.

1
Challenge

6 themes without duplicating CSS

Supporting 6 color themes and dark/light mode without maintaining 12 separate stylesheets was an upfront architecture challenge.

Solved

CSS custom properties + data-theme on html

All colors as CSS variables. Theme switching updates one data-theme attribute, cascading all changes instantly with zero per-element JS.

2
Challenge

3D card tilt without performance drops

Cards needed smooth perspective tilt on hover without layout thrashing or jank on lower-end devices.

Solved

CSS transform + rAF throttle

perspective() rotateX/Y driven by mouse-to-card offset, with mousemove throttled via requestAnimationFrame to maintain 60fps.

3
Challenge

backdrop-filter cross-browser gaps

The glassmorphism blur requires backdrop-filter which isn't uniformly supported, especially in older Firefox.

Solved

Progressive enhancement fallback

-webkit-backdrop-filter prefix for Safari. Semi-transparent solid background fallback — cards remain readable in all environments.

06

Lessons Learned

No framework safety net means no hiding from the fundamentals.

🏗️
CSS architecture is underrated

Managing 1200+ lines of hand-written CSS requires deliberate naming and section structure. BEM-inspired class names and clear comments kept the codebase navigable as it grew.

🎭
Design is a technical skill

Spacing, hierarchy, and color balance aren't aesthetic preferences — they affect readability and trust. Getting them right required iteration, not intuition alone.

📱
Mobile-first prevents rework

Desktop-first sections needed heavy rewrites for mobile. Switching to mobile-first mid-project on later sections saved significant debugging time.

🔄
A portfolio is never finished

Started as 4 sections. Grew to include SaaS products, games, and case studies. Treating it as a living document — not a one-time build — is the correct mindset.

07

Outcome

A fully handcrafted portfolio — live at a custom domain with a real SaaS product that no template can replicate.

6 Color Themes
Live & Switchable

Purple, Blue, Green, Orange, Rose, Cyan — all driven by CSS variables. Full dark/light mode support across every theme, toggled in one click.

0 Frameworks Used
100% Handwritten

Pure HTML, CSS, and JavaScript throughout. Every animation, every card, every interaction — coded from scratch. The portfolio itself is the proof of skill.

🟢 Deployment Status
Live at Custom Domain

shahriarevan.com — deployed via GitHub Pages with Namecheap CNAME DNS configuration. Auto-deploys on every git push.