A modern, responsive developer portfolio built with Next.js 15, TypeScript, Tailwind CSS, and shadcn/ui. Features beautiful animations, dark mode support, and a contact form with email integration.
- Modern Design: Clean, professional layout with smooth animations
- Responsive: Fully mobile-friendly design that works on all devices
- Dark Mode: System preference detection with manual toggle
- Contact Form: Functional contact form with email integration using Resend
- Animations: Beautiful animations powered by Framer Motion
- Type Safe: Built with TypeScript for better development experience
- SEO Optimized: Proper meta tags and semantic HTML structure
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: shadcn/ui
- Animations: Framer Motion
- Form Handling: React Hook Form + Zod validation
- Email Service: Resend
- Theme: next-themes
- Icons: Lucide React
- Node.js 18+ installed
- npm, yarn, or pnpm package manager
-
Clone the repository
git clone https://github.com/GRONK13/devportfolio.git cd devportfolio -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
cp .env.example .env.local
Edit
.env.localand add your configuration:RESEND_API_KEY=your_resend_api_key_here CONTACT_EMAIL=your.email@example.com
-
Run the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser
Navigate to http://localhost:3000 to see your portfolio.
To enable the contact form functionality:
-
Sign up for Resend
- Go to resend.com and create an account
- Get your API key from the dashboard
-
Configure environment variables
- Add your
RESEND_API_KEYto.env.local - Set
CONTACT_EMAILto where you want to receive messages
- Add your
-
Test the contact form
- The form will validate inputs and show success/error messages
- Without API key configuration, messages will be logged to console
Update your personal information in the centralized configuration file:
- Personal Info:
data/personal-info.ts- Contains all your personal details, contact info, social links, and descriptions - Projects:
data/projects.ts- Your project portfolio - Skills:
data/skills.ts- Technical skills and tools - Experience:
data/experience.ts- Work experience and education - Certificates:
data/certificates.ts- Professional certifications
- Colors: Modify the CSS custom properties in
app/globals.css - Components: Customize shadcn/ui components in
components/ui/ - Animations: Adjust Framer Motion animations in component files
Update the navigation items in components/navbar.tsx:
const navigation = [
{ name: "Home", href: "/", icon: Home },
{ name: "About", href: "/about", icon: User },
// Add or modify navigation items
];The portfolio is fully responsive and includes:
- Mobile-friendly navigation with hamburger menu
- Optimized layouts for all screen sizes
- Touch-friendly interactive elements
- Performance optimizations for mobile devices
Dark mode is implemented using next-themes:
- Automatically detects system preference
- Manual toggle available in navigation
- Smooth transitions between themes
- Consistent styling across all components
The portfolio is optimized for performance:
- Next.js App Router for optimal loading
- Static generation where possible
- Optimized images and assets
- Minimal bundle size with tree shaking
- Fast animations with Framer Motion
- Push your code to GitHub
- Connect your repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on every push
The portfolio can be deployed on any platform that supports Next.js:
- Netlify
- AWS Amplify
- Railway
- DigitalOcean App Platform
This project is open source and available under the MIT License.
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
If you have any questions or need help with setup, please open an issue or contact me directly at gregg.marayan@gmail.com.
Built with ❤️ using Next.js and modern web technologies.