Skip to content

Repository files navigation

Ntale Portfolio - Next.js 14 Edition

A cutting-edge portfolio website showcasing skills, projects, and achievements in software engineering, photography, and videography. Built with modern web technologies to deliver superior performance, accessibility, and user experience.

✨ Features

🎨 Design & User Experience

  • Modern Design: Clean, minimalist interface with a custom design system
  • Dark/Light Mode: Seamless theme switching with next-themes
  • Responsive Design: Optimized for all screen sizes and devices
  • Advanced Animations: Smooth transitions and micro-interactions with Framer Motion
  • Floating Action Button: Smart services CTA that appears after 2 seconds on non-services pages

πŸ“§ Professional Email System

  • Unified Email Service: Professional email handling for all forms via EmailJS
  • Service Quote Forms: Detailed quote requests with priority-based organization
  • Contact Forms: General inquiry handling with structured responses
  • Newsletter Signup: Email subscription with confirmation system
  • Email Templates: Professional email formatting with priority levels (HIGH/MEDIUM/LOW)
  • Error Handling: Comprehensive error handling with user-friendly messages

πŸ’Ό Business Features

  • Services Pages: Complete freelance business platform with pricing packages
  • Quote System: Professional quote request forms with detailed project information
  • Multiple Currencies: USD and Tanzanian Shilling support
  • Payment Options: Flexible payment preferences (upfront, milestones, completion)
  • GEO Optimization: AI search engine optimization for better discoverability
  • Local SEO: Tanzania-specific optimization for local market reach

πŸ› οΈ Technical Features

  • Next.js 14: App Router with Server Components and Static Site Generation
  • TypeScript: Full type safety and enhanced developer experience
  • Performance Optimized: Image optimization, lazy loading, and bundle optimization
  • SEO Optimized: Comprehensive meta tags, structured data, and AI-friendly content
  • Analytics Integration: Vercel Analytics, Speed Insights, and custom event tracking
  • Web Vitals Tracking: Real-time performance monitoring
  • Error Tracking: Comprehensive error monitoring and debugging tools

πŸ› οΈ Tech Stack

Core Framework

  • Next.js 14: React framework with App Router and Server Components
  • TypeScript: Type-safe JavaScript with enhanced developer experience
  • Tailwind CSS: Utility-first CSS framework with custom design tokens

UI & Animations

  • Framer Motion: Advanced animations and transitions
  • React Icons: Beautiful, customizable SVG icons
  • next-themes: Theme management with system preference detection
  • Lucide React: Additional icon set for enhanced UI

Email & Forms

  • EmailJS: Professional email service integration
  • React Hook Form: Efficient form handling and validation
  • Unified Email System: Centralized email management for all forms

Analytics & Performance

  • Vercel Analytics: Real-time website analytics and insights
  • Speed Insights: Performance monitoring and optimization
  • Web Vitals Tracking: Core web vitals monitoring
  • Custom Event Tracking: User interaction and behavior analytics

Content & Data

  • GitHub API: Dynamic repository and contribution data
  • Markdown Support: Content management with frontmatter
  • Dynamic Content: Project and blog content management

Development Tools

  • ESLint: Code linting and style enforcement
  • PostCSS: CSS processing and optimization
  • TypeScript: Enhanced development experience with type safety

πŸ“ Project Structure

Ntale-Portfolio/
β”œβ”€β”€ public/                 # Static assets and optimized images
β”‚   β”œβ”€β”€ optimized/         # WebP and optimized images
β”‚   β”œβ”€β”€ robots.txt         # SEO crawler instructions
β”‚   └── favicon.png        # Site favicon
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/               # Next.js 14 App Router
β”‚   β”‚   β”œβ”€β”€ globals.css    # Global styles and Tailwind imports
β”‚   β”‚   β”œβ”€β”€ layout.js      # Root layout with analytics
β”‚   β”‚   β”œβ”€β”€ page.jsx       # Homepage with hero and CTA
β”‚   β”‚   β”œβ”€β”€ about/         # About page with personal info
β”‚   β”‚   β”œβ”€β”€ portfolio/     # Portfolio gallery with projects
β”‚   β”‚   β”œβ”€β”€ services/      # Professional services and pricing
β”‚   β”‚   β”œβ”€β”€ contact/       # Contact page with EmailJS forms
β”‚   β”‚   └── blog/          # Blog with dynamic content
β”‚   β”œβ”€β”€ components/        # React components
β”‚   β”‚   β”œβ”€β”€ ui/           # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ sections/     # Page-specific sections
β”‚   β”‚   β”œβ”€β”€ analytics/    # Analytics and tracking
β”‚   β”‚   β”œβ”€β”€ FloatingServicesButton.jsx # Floating CTA
β”‚   β”‚   β”œβ”€β”€ ServiceQuoteForm.jsx # Professional quote forms
β”‚   β”‚   └── NewsletterSignup.jsx # Email subscription
β”‚   β”œβ”€β”€ lib/              # Utility functions and services
β”‚   β”‚   β”œβ”€β”€ analytics.ts  # Custom analytics tracking
β”‚   β”‚   β”œβ”€β”€ emailService.js # Unified email service
β”‚   β”‚   β”œβ”€β”€ seo.ts        # SEO and structured data
β”‚   β”‚   β”œβ”€β”€ geo-content.js # GEO optimization content
β”‚   β”‚   β”œβ”€β”€ github.ts     # GitHub API integration
β”‚   β”‚   └── utils.ts      # Helper functions
β”‚   └── types/            # TypeScript definitions
β”œβ”€β”€ content/              # Markdown content
β”‚   └── projects/         # Project documentation
β”œβ”€β”€ tailwind.config.js    # Tailwind configuration
β”œβ”€β”€ next.config.mjs       # Next.js configuration
β”œβ”€β”€ tsconfig.json         # TypeScript configuration
└── package.json          # Dependencies and scripts

οΏ½ Getting Started

Prerequisites

  • Node.js: Version 18+ required
  • npm/yarn/pnpm: Package manager for installing dependencies
  • Git: For version control

Installation

  1. Clone the repository:

    git clone https://github.com/JuliusNtale/Ntale-Portfolio.git
  2. Navigate to the project directory:

    cd Ntale-Portfolio
  3. Install dependencies:

    npm install

Environment Variables

Create a .env.local file in the root directory and add the following variables:

# EmailJS Configuration (Required for contact forms)
NEXT_PUBLIC_SERVICE_ID=your_emailjs_service_id
NEXT_PUBLIC_TEMPLATE_ID=your_emailjs_template_id
NEXT_PUBLIC_PUBLIC_KEY=your_emailjs_public_key

# Google Analytics (Optional - for tracking)
NEXT_PUBLIC_GA_ID=your_google_analytics_id

# GitHub API (Optional - for dynamic repository data)
GITHUB_TOKEN=your_github_personal_access_token

Email System Setup

The portfolio includes a professional email management system:

  1. EmailJS Integration: Professional email service for all forms
  2. Multiple Form Types: Contact, service quotes, and newsletter subscriptions
  3. Priority-Based Organization: Emails categorized as HIGH/MEDIUM/LOW priority
  4. Error Handling: Comprehensive error handling with user feedback
  5. Template System: Professional email templates with consistent formatting

Setting up EmailJS

  1. Create account at EmailJS
  2. Create email service (Gmail, Outlook, etc.)
  3. Create email template using the provided template in EMAILJS_TEMPLATE_SETUP.md
  4. Add environment variables to .env.local
  5. Test using the debugging page at /emailjs-test

Performance & Analytics Monitoring

The portfolio includes comprehensive analytics and performance monitoring:

  • Vercel Analytics: Real-time visitor and page view tracking
  • Speed Insights: Core Web Vitals and performance metrics
  • Custom Event Tracking: User interactions and behavior analysis
  • Web Vitals Monitoring: LCP, FID, CLS tracking
  • Error Tracking: Comprehensive error monitoring and debugging

GEO (Generative Engine Optimization)

Optimized for AI search engines including ChatGPT, Claude, and Perplexity:

  • AI-Friendly Content: Hidden SEO content for AI consumption
  • Structured Data: Multiple JSON-LD schemas for better understanding
  • Geographic Optimization: Tanzania and East Africa specific optimization
  • Professional Context: Clear technical expertise and service offerings
  • FAQ Integration: Common questions and comprehensive answers

πŸ’Ό Business Features

Professional Services Platform

The portfolio includes a complete freelance business platform:

  • Service Packages: Three tiers of web development services
  • Quote System: Professional quote request forms with detailed project information
  • Pricing Transparency: Clear pricing in multiple currencies (USD/TSH)
  • Payment Flexibility: Multiple payment options and schedules
  • Client Education: Detailed explanations of services and technologies

Email Management System

Professional email handling for business inquiries:

  • Priority-Based Organization: HIGH (Service Quotes), MEDIUM (Contact), LOW (Newsletter)
  • Structured Email Templates: Professional formatting with all necessary details
  • Client Information Capture: Comprehensive client data collection
  • Follow-up Guidance: Clear next steps for each inquiry type
  • Multiple Form Types: Service quotes, general contact, newsletter subscriptions

Local Market Optimization

Specifically optimized for the Tanzanian and East African market:

  • Local SEO: Tanzania-specific keywords and content
  • Currency Support: Tanzanian Shilling and USD pricing
  • Regional Context: Understanding of local business environment
  • Remote Work Capabilities: Clear indication of global service availability

Development

Start the development server:

npm run dev

The application will be available at http://localhost:3000.

Building for Production

Build the project for production:

npm run build

Start the production server:

npm start

πŸ“ Content Management

Adding Projects

  1. Create a new Markdown file in content/projects/:

    ---
    title: "Project Name"
    description: "Brief description"
    tech: ["React", "TypeScript", "Tailwind"]
    github: "https://github.com/username/repo"
    demo: "https://demo-url.com"
    image: "/project-image.jpg"
    featured: true
    ---
    
    # Project Name
    
    Detailed project description here...
  2. Add project images to public/images/projects/

Customizing Content

  • Personal Info: Update src/lib/data.ts
  • Skills & Experience: Modify the skills and experiences arrays in src/lib/data.ts
  • Theme Colors: Customize in tailwind.config.js

🎨 Customization

Theme Configuration

The portfolio uses a custom design system defined in tailwind.config.js:

// Custom color palette
colors: {
  primary: {
    50: '#f0f9ff',
    500: '#3b82f6',
    900: '#1e3a8a',
  }
}

Adding New Sections

  1. Create component in src/components/sections/
  2. Add to the appropriate page in src/app/
  3. Update navigation if needed

πŸš€ Performance & Optimization

Image Optimization

  • WebP Format: All images converted to WebP for better compression
  • Multiple Sizes: Responsive images with srcset for different screen sizes
  • Lazy Loading: Images load only when needed to improve performance
  • Optimized Assets: 95% reduction in image file sizes
  • Next.js Image Component: Automatic optimization and responsive loading

SEO & Discoverability

  • Meta Tags: Comprehensive meta tag system for social media and search engines
  • Structured Data: JSON-LD schemas for rich snippets and better search understanding
  • Sitemap: Automatic sitemap generation for search engine indexing
  • Robots.txt: Optimized for all major search engines and AI crawlers
  • Open Graph: Enhanced social media preview optimization

Performance Monitoring

  • Core Web Vitals: Real-time monitoring of LCP, FID, and CLS
  • Bundle Analysis: Optimized JavaScript bundles with code splitting
  • Performance Budgets: Automated performance monitoring and alerts
  • Speed Insights: Detailed performance analytics and recommendations
  • Error Tracking: Comprehensive error monitoring and debugging tools

Accessibility & User Experience

  • Responsive Design: Optimized for all screen sizes and devices
  • Dark/Light Mode: System preference detection with manual toggle
  • Keyboard Navigation: Full keyboard accessibility support
  • Screen Reader Support: Proper ARIA labels and semantic HTML
  • Loading States: User-friendly loading indicators and error states

πŸš€ Deployment

Vercel (Recommended)

  1. Push your code to GitHub
  2. Connect your repository to Vercel
  3. Set environment variables in Vercel dashboard
  4. Deploy automatically on each push

Netlify

  1. Build the project: npm run build
  2. Deploy the out directory to Netlify
  3. Set environment variables in Netlify dashboard

Other Platforms

The portfolio supports static export and can be deployed to any static hosting service.

🀝 Contributing

Contributions are welcome! Please follow these steps:

  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

  • Next.js Team: For the amazing framework
  • Vercel: For deployment platform
  • Tailwind CSS: For the utility-first CSS framework
  • Framer Motion: For beautiful animations
  • React Three Fiber: For 3D capabilities
  • Open Source Community: For the incredible tools and inspiration

πŸ“ž Contact


⭐ If you found this portfolio helpful, please consider giving it a star!

Built with ❀️ using Next.js 14 and modern web technologies.

About

Personal portfolio website

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages