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