A production-ready personal brand website built with Next.js 14, TypeScript, Tailwind CSS, and Framer Motion. Features premium dark theme design with gold accents, GitHub API integration, and EmailJS contact form.
🔗 https://mathew-tech.vercel.app/
📂 GitHub Repository: https://github.com/MathewKioko/MathewTech
- 🎨 Premium dark theme with gold accents
- 📱 Fully responsive (mobile-first design)
- ✨ Smooth animations with Framer Motion
- 🔧 GitHub API integration for projects
- 📧 EmailJS contact form with validation
- 📜 Scroll progress indicator
- 🎯 SEO optimized with metadata
- Navbar - Sticky navigation with mobile hamburger menu
- Hero - Animated introduction with logo showcase
- About - Timeline and skills showcase
- Services - 6 service cards with hover effects
- Projects - GitHub repo integration with filtering
- Contact - Form with EmailJS integration
- Footer - Navigation and social links
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Icons: React Icons
- Email: EmailJS
- Deployment: Vercel
- Node.js 18+ installed
- npm or yarn package manager
- Git for version control
- Clone the repository:
git clone <repository-url>
cd mathewtech- Install dependencies:
npm install- Copy environment variables:
cp .env.local.example .env.local- Add your configuration to
.env.local:
NEXT_PUBLIC_EMAILJS_SERVICE_ID=your_service_id
NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=your_template_id
NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=your_public_key- Run development server:
npm run dev- Open http://localhost:3000 in your browser.
mathewtech/
├── app/
│ ├── layout.tsx # Root layout with metadata
│ ├── page.tsx # Main page
│ └── globals.css # Global styles
├── components/
│ ├── Navbar.tsx # Navigation component
│ ├── Footer.tsx # Footer component
│ └── ScrollProgress.tsx # Scroll progress bar
├── sections/
│ ├── Hero.tsx # Hero section
│ ├── About.tsx # About section with timeline
│ ├── Services.tsx # Services section
│ ├── Projects.tsx # GitHub projects section
│ └── Contact.tsx # Contact form section
├── lib/
│ └── utils.ts # Utility functions
├── types/
│ └── index.ts # TypeScript interfaces
├── public/
│ ├── logo.png # Site logo
│ ├── favicon.ico # Favicon
│ └── resume.pdf # Resume file (optional)
├── .env.local.example # Environment variables template
├── tailwind.config.ts # Tailwind configuration
├── next.config.js # Next.js configuration
└── package.json # Dependencies
The Projects section fetches repositories from GitHub using the REST API:
- API Endpoint:
https://api.github.com/users/{username}/repos - Features:
- Fetches user's public repositories
- Filters out forked repositories
- Sorts by most recently updated
- Filters by programming language
- Displays: name, description, language, stars, last updated
In sections/Projects.tsx, change the username:
const GITHUB_USERNAME = "delvis007"; // Change to your GitHub username- Unauthenticated: 60 requests/hour
- Authenticated: 5,000 requests/hour
To increase limits, add a GitHub token:
GITHUB_TOKEN=your_github_token- Go to EmailJS
- Sign up for free account
- Verify your email
- Click "Email Services" → "Add New Service"
- Choose your email provider (Gmail, Outlook, etc.)
- Connect your email account
- Note the Service ID
- Click "Email Templates" → "Create New Template"
- Design your email template
- Use variables:
{{name}},{{email}},{{message}} - Save and note the Template ID
- Click "Account" → "API Key"
- Note your Public Key
NEXT_PUBLIC_EMAILJS_SERVICE_ID=service_xxxxx
NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=template_xxxxx
NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=public_xxxxx- Push to GitHub:
git add .
git commit -m "Initial commit"
git push origin main-
Deploy on Vercel:
- Go to Vercel
- Sign in with GitHub
- Click "New Project"
- Import your repository
- Add environment variables
- Click "Deploy"
-
Your site will be live at:
https://mathewtech.vercel.app
npm run build
npm startEdit tailwind.config.ts:
colors: {
accent: {
gold: "#C9A227", // Primary accent
green: "#006B3C", // Secondary
orange: "#A44C0F", // Tertiary
},
}Search and replace these in the project:
delvis007- GitHub usernamedelvis-kioko- LinkedIn usernamedelviskioko@example.com- Your email254700000000- WhatsApp number
- Add your PDF to
public/resume.pdf - The download button in Hero will work automatically
- Lighthouse Score: 90+
- First Contentful Paint: < 1.5s
- Time to Interactive: < 3s
- SEO Score: 100
This project is for personal use. Feel free to use it as a template for your own portfolio.
- Built with Next.js
- Animations by Framer Motion
- Icons by React Icons
- Design inspired by premium tech portfolios
Built with ❤️ by Mathew Kioko | MathewTech