Developer Portfolio

A showcase of my software engineering capabilities.

A full-stack personal portfolio application designed to showcase software engineering projects, technical skills, and professional experience. Built with a focus on high performance and an immersive user experience, the website features advanced 3D visualizations, smooth scroll animations, and a seamless integrated booking system to facilitate direct communication with potential clients or recruiters.

TECH STACK
VUE.JS
NUXT.JS
TYPESCRIPT
TAILWIND CSS
DOCKER
TRAEFIK
SCSS
THREE.JS
GSAP

Why I Built This

I wanted to build an experience that serves as living proof of my skills integrating complex 3D rendering with a robust infrastructure was the core constraint that drove my technical decisions.

Every dependency from GSAP for smooth animations to Docker for reproducible deployments was deliberately chosen to balance frontend immersion with production-grade server reliability.

Developer Portfolio

Architecture Overview

The application follows a decoupled pattern where the frontend handles intensive WebGL rendering, while the Dockerized infrastructure layer ensures secure, isolated delivery.

Presentation

Nuxt 4 and Vue 3 managing UI components, dynamic routing, and server-side rendering for optimal SEO.

Graphics & Animation

Three.js and GSAP isolated in specific client-only components to prevent SSR hydration mismatches.

Infrastructure

Docker Compose orchestrating Node.js containers alongside a Traefik reverse proxy handling automated Let's Encrypt TLS challenges.

Client state is scoped strictly using Vue's Composition API primitives (ref, reactive), avoiding bloated global stores for better performance.

EXPLORER
myPortfolio
assets
components
composables
data
layouts
pages
public
utils
docker-compose.yml
Dockerfile
eslint.config.js
nuxt.config.ts
package.json
tailwind.config.js
tsconfig.json

Core Features

Interactive 3D Render Engine

Implemented a dedicated rendering pipeline using Three.js to construct an interactive globe that maps technical skills directly onto user interactions.

• Geometry OptimizationBatched 3D geometries to significantly reduce necessary draw calls in WebGL.
• Lazy LoadingDeferred WebGL context initialization until the component inherently enters the view, drastically saving initial thread lock.
• Hydration SafetyWrapped explicit 3D components in `<ClientOnly>` wrappers to ensure Next.js/Nuxt SSR processes do not break out during re-hydration.

Automated DevOps Pipeline

Designed a zero-touch SSL and reverse proxy routing architecture capable of handling container reloads.

• Traefik IntegrationUsed explicit Docker labels to dynamically map subdomains to service containers rapidly.
• ACME TLSConfigured fully automated certificate generation and secure renewal looping logic.

Backend Systems

Integration & External APIs

The Cal.com integration acts as a primary interaction backend layer, embedded directly via namespace-isolated script injection to keep the main Vue thread free from intensive initial processing overhead until triggered.

Key Decisions

Nuxt 4 over standard Vue SPA

Traded simple static hosting for a Node.js runtime to gain Server-Side Rendering (SSR). This drastically improved initial load times and overall SEO metadata generation capabilities. The downside of maintaining server environments was vastly offset by the performance gains.

Self-Hosted Docker over Vercel

Chose to manage my own server instance using complete Docker deployment flows over easier Vercel deployments to explicitly demonstrate deep DevOps skills and fundamental infrastructure awareness.

What I Learned

WebGL Memory Management

Discovered that Single Page Applications (SPAs) require meticulous explicit disposal of all Three.js geometries, specific materials, and raw textures precisely upon component unmounting to completely block severe browser tab memory leaks.

Hydration Complexities

Learned to rigorously separate generic server-renderable HTML elements from dynamic browser-only WebGL UI canvases to prevent deeply complex tracking mismatches during Vue element hydration rendering.

Background

SUCCESS IS NO ACCIDENT, IT IS HARD WORK.

LET'S MAKE IT HAPPEN!

MAKE IT WORK. MAKE IT RIGHT. MAKE IT FAST. — Kent Beck

Get In Touch

I'm always open to discussing new opportunities, creative projects, or just having a chat about technology.