3D-Portfolio

Portfolio Icon Maher's Portfolio

A modern, animated, and fully responsive developer portfolio built with Next.js 16, React 19, and a rich set of interactive 3D/UI experiences.

Next.js 16 React 19 TypeScript Tailwind CSS Shadcn UI Three.js Sentry

πŸ“Œ Table of Contents


✨ Overview

Maher’s Portfolio is a modern, minimalist developer portfolio designed to showcase projects, work experience, and client testimonials through a series of polished, animated sections. The site combines Aceternity UI-style interactive components (spotlight effects, 3D pin cards, moving borders, canvas reveal effects) with a real-time 3D interactive globe and smooth Framer Motion animations, all wrapped in a dark-themed, fully responsive layout.

Key highlights:


πŸ–ΌοΈ Screenshots

πŸ–₯️ Desktop View

Desktop Preview


πŸ› οΈ Tech Stack

Category Tools & Libraries
Core Framework Next.js 16.2.10 (App Router), React 19.2.4, TypeScript 5
Styling Tailwind CSS 4, tailwind-merge, class-variance-authority, tw-animate-css
UI Components shadcn/ui, Aceternity UI-style custom components (Spotlight, 3D Pin, Moving Border, Bento Grid)
Animation Motion (Framer Motion), Lottie (lottie-react) for confetti micro-interactions
3D / WebGL Three.js, @react-three/fiber, @react-three/drei, three-globe (interactive globe)
Icons Lucide React, Tabler Icons
Theming next-themes (dark mode)
Error Monitoring Sentry (@sentry/nextjs) β€” client, server, and edge runtime instrumentation
Linting ESLint 9, eslint-config-next

πŸ“ Project Structure

portfolio/
β”‚
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ layout.tsx              # Root layout, fonts, theme provider
β”‚   β”œβ”€β”€ page.tsx                 # Home page β€” composes all sections
β”‚   β”œβ”€β”€ theme-provider.tsx       # next-themes wrapper
β”‚   β”œβ”€β”€ global-error.tsx         # Sentry-wrapped global error boundary
β”‚   └── globals.css              # Tailwind v4 theme tokens & keyframes
β”‚
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Hero.tsx                  # Landing section with spotlight + text effect
β”‚   β”œβ”€β”€ Grid.tsx                  # "About" bento grid wrapper
β”‚   β”œβ”€β”€ RecentProjects.tsx        # 3D pin project showcase
β”‚   β”œβ”€β”€ Clients.tsx                # Testimonials + company logos
β”‚   β”œβ”€β”€ Experience.tsx            # Work experience cards
β”‚   β”œβ”€β”€ Approach.tsx               # Process/approach cards with canvas reveal
β”‚   β”œβ”€β”€ Footer.tsx                 # Contact CTA + social links
β”‚   β”œβ”€β”€ MagicButton.tsx            # Reusable gradient-border button
β”‚   └── ui/
β”‚       β”œβ”€β”€ bento-grid.tsx         # Bento grid + item components
β”‚       β”œβ”€β”€ 3d-pin.tsx             # 3D tilt project card
β”‚       β”œβ”€β”€ moving-border.tsx      # Animated gradient border button/card
β”‚       β”œβ”€β”€ spotlight-new.tsx      # Hero spotlight animation
β”‚       β”œβ”€β”€ text-generate-effect.tsx # Word-by-word text reveal
β”‚       β”œβ”€β”€ infinite-moving-cards.tsx # Auto-scrolling testimonial cards
β”‚       β”œβ”€β”€ canvas-reveal-effect.tsx  # WebGL dot-matrix reveal shader
β”‚       β”œβ”€β”€ Globe.tsx / GridGlobe.tsx # Interactive 3D globe (three-globe)
β”‚       β”œβ”€β”€ floating-navbar.tsx    # Scroll-aware sticky navigation
β”‚       └── tailwindcss-buttons.tsx
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ index.ts                   # Nav items, projects, testimonials, experience
β”‚   β”œβ”€β”€ globe.json                 # GeoJSON country data for the 3D globe
β”‚   └── confetti.json              # Lottie animation data
β”‚
β”œβ”€β”€ lib/
β”‚   └── utils.ts                   # `cn()` class-merging helper
β”‚
β”œβ”€β”€ instrumentation.ts             # Sentry server/edge init
β”œβ”€β”€ instrumentation-client.ts      # Sentry browser init (Replay + Feedback)
β”œβ”€β”€ sentry.server.config.ts
β”œβ”€β”€ sentry.edge.config.ts
β”œβ”€β”€ next.config.ts                 # Static export + Sentry webpack plugin
└── components.json                 # shadcn/ui configuration

🎯 Core Features

🏠 Landing & Navigation

🧩 About Me

πŸͺͺ Recent Projects

πŸ’¬ Testimonials & Clients

🧭 Work Experience

🎨 My Approach

πŸŒ— Theming & Reliability


🧭 Sections Breakdown

Section Component Description
Navigation FloatingNav Sticky, scroll-aware nav bar
Hero Hero Intro headline, spotlight, CTA button
About Grid β†’ BentoGrid Bio, tech stack, 3D globe, email copy
Projects RecentProjects 3D pin cards for featured work
Testimonials Clients Infinite scrolling reviews + company logos
Experience Experience Work history timeline cards
Approach Approach Development process, 3 animated cards
Footer Footer Contact CTA + social links

πŸš€ Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/your-username/portfolio.git
cd portfolio

# Install dependencies
npm install

Running the Project

# Start the development server
npm run dev

# Build for production (static export)
npm run build

# Start the production server
npm run start

# Lint the codebase
npm run lint

Open http://localhost:3000 in your browser to view the result.

Customizing Content

Most personal content (projects, testimonials, work experience, nav links, and social links) lives in a single file:

data/index.ts

Update the projects, testimonials, workExperience, companies, and socialMedia arrays to reflect your own information.


🐞 Error Monitoring

This project ships with Sentry pre-configured across all Next.js runtimes:


πŸ§‘β€πŸ« Tutorial & Inspiration

This project was built by following and learning from a tutorial by Adrian Hajdin from JavaScript Mastery.


πŸ‘¨β€πŸ’» Author

Maher Elmair


🌐 Live Preview

πŸš€ Check out the live version of the portfolio:

πŸ‘‰ 3D Portfolio


πŸ™Œ Thank You

If you found this project useful or inspiring, please consider giving it a ⭐️
Pull requests, issues, and suggestions are always welcome πŸ™


Maher's Portfolio β€” Transforming concepts into seamless user experiences