Portfolio Redesign with 3D Visuals
A complete rebuild of my personal portfolio using Astro, Three.js, and modern web technologies to create an immersive developer experience.

Problem
My previous Laravel-based portfolio was functional but lacked the visual impact and interactivity that modern web development can offer. I wanted something that would immediately capture attention and showcase my technical capabilities.
Solution
Built a completely new portfolio from the ground up using Astro for its excellent performance and SEO capabilities, combined with Three.js for 3D graphics and GSAP for smooth animations.
Results
- Lighthouse Performance 95+
- First Contentful Paint <1.5s
- Bundle Size Reduction 40%
The Challenge
As a full-stack developer with over 15 years of experience, I needed a portfolio that would not only showcase my work but also demonstrate my ability to work with cutting-edge web technologies. The previous Laravel-based site served its purpose well, but it was time for something more dynamic.
Technical Approach
Framework Selection
I chose Astro as the foundation for several reasons:
- Zero JavaScript by default - Only ships JS where needed
- Partial hydration - React components only load when visible
- Built-in SEO - Server-rendered pages with full meta control
- MDX support - Content management without a CMS
3D Graphics Implementation
The hero section features a custom Three.js scene built with React Three Fiber:
function CodeParticles() {
const mesh = useRef<THREE.InstancedMesh>(null);
const count = 150;
useFrame(({ clock }) => {
if (!mesh.current) return;
particles.forEach((particle, i) => {
// Animate each particle with unique motion
const t = clock.elapsedTime + particle.offset;
dummy.position.set(
particle.x + Math.sin(t * particle.speed) * 0.5,
particle.y + Math.cos(t * particle.speed) * 0.3,
particle.z
);
dummy.updateMatrix();
mesh.current!.setMatrixAt(i, dummy.matrix);
});
mesh.current.instanceMatrix.needsUpdate = true;
});
}Interactive Terminal
The terminal component simulates a real command-line interface with:
- Command history (arrow keys)
- Tab completion
- Multiple themed commands
- ASCII art Easter eggs
Results
The new portfolio achieves excellent performance scores while delivering a memorable user experience. The combination of server-side rendering and client-side hydration ensures fast initial loads without sacrificing interactivity.
Key Learnings
- Three.js bundle size requires careful optimization - lazy loading is essential
- Astro’s island architecture is perfect for mixing static and interactive content
- Accessibility must be built in from the start, especially with 3D content