A modern, production-ready portfolio website built with Next.js, TypeScript, and cutting-edge web technologies. Features comprehensive performance optimizations, accessibility compliance, and professional design patterns.
- Core Web Vitals Monitoring - Real-time performance tracking
- Next.js Image Optimization - WebP/AVIF format support
- Advanced Caching - Optimized resource loading
- Bundle Optimization - Code splitting and compression
- WCAG 2.1 AA Compliant - Full accessibility support
- Structured Data - JSON-LD for enhanced search visibility
- Dynamic Sitemap - Auto-generated SEO optimization
- Screen Reader Support - Complete keyboard navigation
- Environment Variables - Secure credential management
- Security Headers - CSP, XSS protection, and content restrictions
- TypeScript Strict Mode - Comprehensive type safety
- Error Boundaries - Graceful error handling
- PWA Manifest - App-like experience
- Mobile Optimization - Touch-friendly responsive design
- Offline Capabilities - Enhanced mobile performance
- Interactive Skills Display - Proficiency levels with animated progress bars
- Blog Section - Search and filtering capabilities
- Loading States - Skeleton loaders and smooth transitions
- Dark Mode Support - Seamless theme switching
- Next.js 15 - React framework with App Router
- React 19 - Latest React features with concurrent features
- TypeScript - Type-safe development with strict mode
- Tailwind CSS 4 - Modern utility-first CSS framework
- shadcn/ui - High-quality accessible component library
- Framer Motion - Advanced animations and micro-interactions
- Lucide React - Consistent icon system
- web-vitals - Core Web Vitals tracking
- Next.js Image - Optimized image delivery
- Performance API - Real-time monitoring
- EmailJS - Secure contact form functionality
- Structured Data - JSON-LD for SEO enhancement
- PWA Manifest - Progressive Web App capabilities
- ESLint - Advanced code linting with Next.js rules
- TypeScript Strict Mode - Comprehensive type checking
- Error Boundaries - Production-ready error handling
- pnpm - Fast, efficient package management
- Ocean Blue Theme: Primary color palette with complementary gradients
- Component-Based: Modular shadcn/ui components for consistency
- Responsive Grid: Flexible layouts using CSS Grid and Flexbox
- Smooth Animations: Professional motion design with Framer Motion
- Modern Typography: Carefully selected font hierarchy and spacing
-
Clone the repository:
git clone https://github.com/naiplawan/portfolio-react-page.git cd portfolio-react-page
-
Install dependencies:
pnpm install
-
Set up environment variables:
cp .env.local.example .env.local
Configure the following variables in
.env.local
:# EmailJS Configuration (Required for contact form) NEXT_PUBLIC_EMAILJS_SERVICE_ID=your_service_id NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=your_template_id NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=your_public_key # Contact Information NEXT_PUBLIC_CONTACT_EMAIL=[email protected] NEXT_PUBLIC_GITHUB_URL=https://github.com/yourusername NEXT_PUBLIC_LINKEDIN_URL=https://linkedin.com/in/yourusername # App Configuration NEXT_PUBLIC_APP_URL=http://localhost:3000 # Optional: Google Analytics NEXT_PUBLIC_GA_TRACKING_ID=your_ga_tracking_id
-
Start development server:
pnpm dev
-
Open your browser: Navigate to
http://localhost:3000
βββ app/ # Next.js App Router
β βββ about/page.tsx # About page with social links
β βββ blog/page.tsx # Blog with search and filtering
β βββ contact/page.tsx # Contact page with form
β βββ projects/page.tsx # Projects showcase
β βββ robots.txt/route.ts # SEO robots configuration
β βββ sitemap.xml/route.ts # Dynamic sitemap generation
β βββ manifest.json/route.ts # PWA manifest
β βββ error.tsx # Global error boundary
β βββ globals.css # Global styles with CSS variables
β βββ layout.tsx # Root layout with metadata
β βββ page.tsx # Home page with structured data
βββ components/
β βββ accessibility/ # Accessibility components
β β βββ skip-link.tsx # Skip navigation link
β β βββ focus-trap.tsx # Focus management
β β βββ screen-reader-announcer.tsx
β βββ seo/
β β βββ structured-data.tsx # JSON-LD structured data
β βββ ui/ # shadcn/ui components
β β βββ skeleton.tsx # Loading skeletons
β β βββ ... # Button, Card, Input, etc.
β βββ portfolio/ # Custom portfolio components
β β βββ skeletons.tsx # Component-specific loaders
β β βββ ... # NavBar, Skills, etc.
β βββ error-boundary.tsx # Error handling component
β βββ performance-monitor.tsx # Performance tracking
β βββ page-transition.tsx # Route transitions
βββ lib/
β βββ performance.ts # Core Web Vitals monitoring
β βββ github-api.ts # GitHub integration
β βββ utils.ts # Utility functions
βββ public/
β βββ icons/ # PWA icons (various sizes)
β βββ assets/ # Images and media files
β βββ ... # Static assets
βββ .env.local.example # Environment variables template
βββ tailwind.config.js # Tailwind configuration
- NavBar: Responsive navigation with animated text transitions
- Content-Section: Hero section with typewriter effects and animated cards
- AboutMe: Comprehensive developer story with skill highlights
- Skills-Section: Categorized technology stack with interactive cards
- Contact: Full-featured contact form with validation
- Button, Card, Input, Textarea, Badge, Separator
- Consistent styling with ocean blue theme
- Accessible and keyboard navigable
The portfolio uses a carefully crafted ocean blue color palette:
--primary: 203 89% 53%; /* Ocean Blue */
--ocean-blue-50: #eff6ff; /* Light accent */
--ocean-blue-600: #2563eb; /* Primary shade */
--ocean-blue-900: #1e3a8a; /* Dark accent */
- Mobile-first: Optimized for all screen sizes
- Flexible Grid: CSS Grid and Flexbox for complex layouts
- Touch-friendly: Large touch targets and smooth interactions
- Performance: Optimized images and lazy loading
- Real-time LCP, INP, CLS, FCP, and TTFB tracking
- Performance budgets and alerts
- Navigation timing analysis
- Resource loading optimization
- Next.js Image component with WebP/AVIF support
- Responsive image sizes (640px to 3840px)
- Lazy loading and blur placeholder
- Automatic format selection
- WCAG 2.1 AA standards
- Screen reader compatibility
- Keyboard navigation support
- Focus management and skip links
- Color contrast compliance
# Build and test
pnpm build
pnpm start
# Deploy to Vercel
vercel --prod
Ensure these variables are set in your deployment platform:
NEXT_PUBLIC_EMAILJS_SERVICE_ID
NEXT_PUBLIC_EMAILJS_TEMPLATE_ID
NEXT_PUBLIC_EMAILJS_PUBLIC_KEY
NEXT_PUBLIC_CONTACT_EMAIL
NEXT_PUBLIC_APP_URL
- Test contact form functionality
- Verify PWA installation
- Check Core Web Vitals scores
- Validate accessibility compliance
- Test on multiple devices
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Mo'Mos - GitHub
Built with β€οΈ using Next.js, shadcn/ui, and modern web technologies