A modern, high-fidelity personal portfolio designed to mimic a SaaS dashboard. Built with cutting-edge technologies and featuring real-time metrics, interactive components, and a seamless user experience.
- Activity Feed - Real-time activity tracking and metrics
- Tech Radar - Interactive technology proficiency visualization
- Project Metrics - Live statistics on active projects, skills, and experience
- Projects Grid - Animated grid layout showcasing featured projects with status indicators
- Experience Timeline - Changelog-style professional experience visualization
- Project Details - Comprehensive project information with tech stacks and links
- Command Palette - Press
βK(Cmd+K) for quick navigation and search - Dark/Light Theme - Seamless theme switching with system preference detection
- Responsive Design - Optimized for desktop, tablet, and mobile experiences
- Modern UI - Built with shadcn/ui components for consistent, accessible design
- Type-Safe - Full TypeScript implementation with strict type checking
- Performance Optimized - Built with Next.js App Router for optimal loading and SEO
- Accessibility - WCAG compliant with proper ARIA labels and keyboard navigation
- SEO Ready - Optimized meta tags and structured data
- Next.js 16.1.1 - React framework with App Router for optimal performance and SEO
- React 19.2.3 - Modern React with concurrent features and improved performance
- TypeScript 5.0 - Type-safe JavaScript with strict type checking
- Tailwind CSS 4.0 - Utility-first CSS framework for rapid UI development
- shadcn/ui - Re-usable components built on Radix UI and styled with Tailwind
- Radix UI - Unstyled, accessible UI primitives for building high-quality design systems
- Lucide React - Beautiful & consistent icon toolkit made by the community
- Framer Motion - Production-ready motion library for React
- next-themes - Perfect dark/light mode for Next.js
- ESLint 9.0 - Pluggable JavaScript linter for code quality
- Husky - Modern native Git hooks made easy
- pnpm 9.15.0 - Fast, disk space efficient package manager
- date-fns - Modern JavaScript date utility library
- class-variance-authority - Class variance authority for building reusable component variants
- cmdk - Command palette component for React
- Node.js 20.18.0 - JavaScript runtime built on Chrome's V8 JavaScript engine
- Vercel - Platform for deploying and hosting web applications
- Node.js 20.18.0+ - Required runtime environment
- pnpm 9.15.0+ - Package manager (recommended)
-
Clone the repository
git clone https://github.com/BarryHenryJr/barryhenry-portfolio-web.git cd barryhenry-portfolio-web -
Install dependencies
pnpm install
-
Start the development server
pnpm dev
-
Open your browser Navigate to http://localhost:3000 to see the portfolio.
- Hot Reload - Changes are automatically reflected in the browser
- TypeScript - Full type checking and IntelliSense support
- Command Palette - Press
βK(Cmd+K) for quick navigation and search - Theme Switching - Toggle between dark/light modes in the UI
# Development
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint
pnpm prepare # Setup Git hooks (Husky)src/
βββ app/ # Next.js App Router pages
β βββ api/ # API routes (if needed)
β βββ experience/ # Experience timeline page
β β βββ components/ # Experience-specific components
β β βββ page.tsx # Experience page
β βββ favicon.ico # Site favicon
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout component
β βββ page.tsx # Homepage (dashboard)
β βββ projects/ # Projects showcase page
β βββ components/ # Project-specific components
β βββ page.tsx # Projects page
βββ components/ # Reusable React components
β βββ command-menu.tsx # Global command palette
β βββ dashboard/ # Dashboard widgets
β β βββ ActivityFeed.tsx # Activity feed component
β β βββ TechRadar.tsx # Technology radar component
β βββ layout/ # Layout components
β β βββ Shell.tsx # Main app shell
β β βββ Sidebar.tsx # Navigation sidebar
β β βββ StatusBar.tsx # Status bar component
β βββ theme-provider.tsx # Theme provider for dark/light mode
β βββ ui/ # shadcn/ui components
β βββ badge.tsx
β βββ button.tsx
β βββ card.tsx
β βββ ...
βββ lib/ # Utilities and constants
βββ constants.ts # App constants and data
βββ utils.ts # Utility functions
app/- Next.js 13+ App Router structure with page componentscomponents/- Modular component architecture with clear separation of concernslib/- Shared utilities, constants, and business logicui/- Design system components from shadcn/ui
This project uses Husky to manage Git hooks for code quality and consistency.
Git hooks are automatically configured when you run:
pnpm install # Installs dependencies
pnpm prepare # Sets up Husky git hooksThe pre-commit hook automatically runs ESLint to ensure code quality:
pnpm lint # Runs automatically on pre-commitIf linting fails, the commit will be blocked. Fix the issues and try committing again.
You can add more Git hooks by creating files in the .husky/ directory:
commit-msg: Validate commit messagespre-push: Run additional checks before pushing
Example commit-msg hook for conventional commits:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# Add commitlint or custom validation hereThis portfolio is optimized for deployment on Vercel, the platform built by the creators of Next.js.
The project is configured for continuous deployment with GitHub Actions:
- Push to main branch - Triggers automated CI/CD pipeline
- Build verification - Runs linting, type checking, and build tests
- Security scanning - Performs vulnerability and secret scanning
- Auto-deployment - Successful builds deploy automatically to Vercel
To deploy manually:
-
Connect to Vercel
# Install Vercel CLI pnpm add -g vercel # Login to Vercel vercel login # Deploy vercel --prod
-
Environment Variables (if needed) Configure any required environment variables in your Vercel project settings.
The project includes optimized build settings for:
- Static generation - Fast loading with Next.js App Router
- Image optimization - Automatic image optimization and WebP conversion
- SEO optimization - Proper meta tags and structured data
- Performance - Bundle analysis and optimization
To use a custom domain:
- Add your domain in Vercel project settings
- Configure DNS records as instructed
- Enable SSL certificate (automatic)
For detailed deployment documentation, see Next.js deployment docs.