Built with Next.js, TypeScript, and Tailwind CSS. This portfolio showcases my projects, skills, and professional experience with beautiful animations and real-time features. CHECK IT OUT!!!
Live Demo: jedgeoghegan.com
- Modern UI/UX: Clean, responsive design with smooth animations powered by Framer Motion
- Dark/Light Mode: Automatic theme detection with manual toggle option using next-themes
- Interactive Components:
- Dynamic project cards with 3D hover effects
- Interactive skill visualization with hover/click interactions
- Real-time contact form with success feedback
- Animated particle background effects
- Firebase Integration:
- Real-time visitor counter
- Contact form submissions stored in Firebase Realtime Database
- Performance Optimized:
- Server-side rendering with Next.js 15
- Optimized images and lazy loading
- SEO-friendly with proper meta tags
- Responsive Design: Fully optimized for all device sizes from mobile to desktop
- Analytics: Integrated with Vercel Analytics for performance monitoring
- Framework: Next.js 15 with TypeScript
- Styling: Tailwind CSS with custom animations
- UI Components: Radix UI primitives with custom styling
- Animations: Framer Motion for smooth transitions and interactions
- Icons: Lucide React and Heroicons
- Typography: React Type Animation for dynamic text effects
- Database: Firebase Realtime Database
- Hosting: Vercel (with automatic deployments)
- Package Manager: npm
- Linting: ESLint with Next.js configuration
- Type Checking: TypeScript 5
- Build Tool: Next.js with Turbopack for faster development
- Node.js 18+
- npm, yarn, or pnpm
-
Clone the repository
git clone https://github.com/adequatej/personal-portfolio.git cd personal-portfolio -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables (Optional for Firebase features)
Create a
.env.localfile in the root directory:# Firebase Realtime Database URL (optional) NEXT_PUBLIC_FIREBASE_DATABASE_URL=https://your-project-id-default-rtdb.firebaseio.com -
Run the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser
Navigate to http://localhost:3000 to view the portfolio
The portfolio includes optional Firebase integration for visitor counting and contact form submissions.
-
Create a Firebase project
- Go to Firebase Console
- Create a new project
- Enable Realtime Database
-
Configure database rules
Use the provided
database-rules.jsonfile or manually set these rules:{ "rules": { "visitorCount": { ".read": true, ".write": true }, "contactMessages": { ".read": false, ".write": true } } } -
Add your database URL
Add your Firebase Realtime Database URL to
.env.local:NEXT_PUBLIC_FIREBASE_DATABASE_URL=https://your-project-id-default-rtdb.firebaseio.com -
Deploy database rules (if using Firebase CLI)
firebase deploy --only database
The portfolio is fully responsive across all device sizes:
| Breakpoint | Screen Size | Optimizations |
|---|---|---|
| Mobile | 320px - 640px | Single column layout, touch-friendly interactions |
| Tablet | 640px - 1024px | Optimized spacing, medium-sized components |
| Desktop | 1024px - 1440px | Multi-column layouts, hover effects |
| Large | 1440px+ | Maximum content width, enhanced spacing |
- Hero: Dynamic introduction with animated typing and visitor counter
- About: Personal background with animated role cards
- Skills: Interactive technology showcase with project counts
- Projects: Featured projects with filtering and detailed overlays
- Contact: Functional form with Firebase integration
This project is open source and available under the MIT License.
- Email: [email protected]
- LinkedIn: linkedin.com/in/jed-geoghegan
- GitHub: github.com/adequatej