Skip to content

πŸš€ An open-source portfolio for SysAdmin & DevOPS Engineer built with Next.js 16

License

Notifications You must be signed in to change notification settings

EliteSalman/NextJS-Portfolio-Salman-Shafi

Repository files navigation

🌟 Modern Portfolio Website

Next.js Portfolio for System Admins

A premium, fully responsive portfolio website built with Next.js 16, featuring a working contact form, SEO optimization, and modern design principles.

πŸš€ Features

🎨 Design & UI

  • Modern Red & Black Theme: Modern glass effects and gradients
  • Fully Responsive: Mobile-first design with perfect mobile optimization
  • Smooth Animations: Framer Motion animations and transitions
  • Premium Typography: Geist font with optimized readability
  • Modern Card Layouts: Interactive hover effects and shadows

πŸ“§ Contact System

  • Working Contact Form: Fully functional with validation
  • Cloudflare Turnstile Captcha: Bot Protection on Contact Form.
  • Email Integration: You can use any E-Mail provider that supports SMTP
  • Premium Email Templates: Beautiful HTML email styling
  • Loading States: Smooth form submission experience
  • Error Handling: Comprehensive error management

πŸ” SEO Optimized

  • Complete Meta Tags: OpenGraph, Twitter Cards, and more
  • Structured Data: JSON-LD schema for rich snippets
  • Dynamic Sitemap: Auto-generated XML sitemap
  • Robots.txt: Proper crawling instructions
  • Performance Optimized: 99.7kB first load with optimal loading

πŸ›‘οΈ Security & Performance

  • Image Optimization: WebP/AVIF formats with Next.js Image
  • Code Splitting: Automatic chunking for faster loads
  • Production Ready: Console removal, minification, compression

πŸ› οΈ Tech Stack

  • Framework: Next.js 16 (App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS
  • Animations: Framer Motion
  • Icons: Lucide React
  • Email: Nodemailer
  • Deployment: Podman

πŸ“¦ Deployment

  1. Install Podman & Podman Compose
    sudo dnf install podman podman-compose
  2. Clone this GitHub Repo
    git clone https://github.com/EliteSalman/NextJS-Portfolio-Salman-Shafi.git
  3. Do your changes then
    podman build -t nextjs-portfolio .

Before build edit .env.local with your actual values:

# SMTP Configuration   
# Replace these with your actual SMTP credentials   
SMTP_HOST=host.example.tld   
SMTP_USERNAME=your-smtp-username   
SMTP_PASSWORD=your-smtp-password   
SMTP_PORT=587   
SMTP_SECURE=false   

# Email Configuration   
# Update these with your actual email addresses   
FROM_EMAIL_NAME=Your Name   
FROM_EMAIL=no-reply@example.tld   
TO_EMAIL=your-email@example.tld   

# Application Configuration   
# Update with your actual domain   
NEXT_PUBLIC_SITE_URL=https://example.tld   

# Cloudflare Turnstile Configuration   
# Get these from https://dash.cloudflare.com/?to=/:account/turnstile   
TURNSTILE_SITE_KEY=your-turnstile-site-key   
TURNSTILE_SECRET_KEY=your-turnstile-secret-key
  1. Run

    podman-compose up -d
  2. Open in browser

    http://your-server-ip:3001
    

πŸ”§ Configuration

Personal Information

Update the following files with your information:

  • src/app/page.tsx - Hero section, about, experience, skills
  • src/components/Header.tsx - Navigation and branding
  • src/components/Footer.tsx - Footer links and contact info
  • src/app/layout.tsx - SEO meta tags and site information

Images

Replace these images in the public/ folder:

  • photo.webp - Your profile photo
  • share.webp - Social media preview image (1200x630px)

Contact Form

The contact form uses SMTP for email sending and Cloudflare Turnstile for bot protection. To set up:

  1. Get SMTP Credentials from your E-Mail Provider

  2. Set up Cloudflare Turnstile

  3. Configure Environment Variables

    • Add your SMTP credentials to .env.local
    • Add your Turnstile keys to .env.local
    • Update sender/receiver email addresses
  4. Test the Form

    • Submit a test message
    • Complete the Turnstile challenge
    • Check your email inbox
    • Verify email formatting

πŸ“Š Performance

  • First Load JS: 99.7kB
  • Build Time: ~8 seconds
  • Lighthouse Score: 100/100
  • Mobile Optimized: Perfect responsive design

πŸ” SEO Features

  • Meta Tags: Complete OpenGraph and Twitter Cards
  • Structured Data: Person schema with job details
  • Sitemap: /sitemap.xml
  • Robots: /robots.txt
  • Canonical URLs: Proper link structure

πŸ›‘οΈ Security

  • Input Validation: Form sanitization
  • Bot Protection: Cloudflare Turnstile integration
  • Rate Limiting: Form submission protection

🎨 Customization

Colors

Primary colors are defined in src/app/globals.css:

.text-premium { color: #3b82f6; }
.bg-premium-blue { background: #3b82f6; }
.text-gradient-premium { background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%); }

Typography

Font configuration in src/app/layout.tsx:

const geistSans = Geist({
  variable: "--font-geist-sans",
  subsets: ["latin"],
});

Animations

Framer Motion variants in src/app/page.tsx:

initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.6 }}

πŸ“± Mobile Optimization

  • Responsive Design: Mobile-first approach
  • Touch Friendly: Proper touch targets
  • Fast Loading: Optimized images and code
  • Gesture Support: Smooth scrolling and interactions

πŸ”§ Development

Available Scripts

npm run dev          # Start development server
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLint
npm run lint:fix     # Fix ESLint issues

Project Structure

β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ api/contact/     # Contact form API
β”‚   β”‚   β”œβ”€β”€ globals.css      # Global styles
β”‚   β”‚   β”œβ”€β”€ layout.tsx       # Root layout
β”‚   β”‚   β”œβ”€β”€ page.tsx         # Home page
β”‚   β”‚   └── sitemap.ts       # Dynamic sitemap
β”‚   └── components/
β”‚       β”œβ”€β”€ Header.tsx       # Navigation
β”‚       └── Footer.tsx       # Footer
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ photo.webp          # Profile photo
β”‚   β”œβ”€β”€ share.webp          # Social preview
β”‚   └── ...
└── ...

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support

If you found this project helpful, please give it a ⭐ star on GitHub!

For questions or support:

Original Project:


Made with ❀️ using Next.js

About

πŸš€ An open-source portfolio for SysAdmin & DevOPS Engineer built with Next.js 16

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 2

  •  
  •