Skip to content

Kakapa98/profile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Mpho Alphios Mofokeng - Portfolio 2025

Kahuna | Kakapa Student Performance Manager & QA-Elective Lead at WeThinkCode_ Blockchain Enthusiast | Mentor | Quality-Driven Technologist

A modern, animated portfolio website showcasing my professional journey, technical skills, projects, and blog posts. Built with cutting-edge web technologies and designed for performance, accessibility, and user experience.


πŸš€ Features

  • 🎨 Modern Design: Clean, professional interface with smooth animations and transitions
  • πŸ“± Fully Responsive: Mobile-first approach, optimized for all screen sizes
  • ⚑ High Performance: Optimized for speed with Next.js 15 and static generation
  • πŸŒ“ Dark Mode: Seamless light/dark theme switching with system preference detection
  • β™Ώ Accessible: WCAG compliant with semantic HTML and ARIA labels
  • ✨ Interactive Animations: Powered by Framer Motion for engaging user experience
  • πŸ“ Blog System: Dynamic blog with categories, tags, search, and filtering
  • πŸ“„ CV Download: Direct download of professional resume
  • πŸ” SEO Optimized: Meta tags, Open Graph, and structured data for better discoverability

πŸ›  Tech Stack

Core Technologies

Development Tools

  • Package Manager: npm
  • Linting: ESLint
  • Type Checking: TypeScript strict mode
  • Deployment: Vercel (recommended)

πŸƒβ€β™‚οΈ Getting Started

Prerequisites

  • Node.js 18+ installed
  • npm or yarn package manager

Installation

  1. Clone the repository:

    git clone https://github.com/Kakapa98/portfolio-2025.git
    cd portfolio-2025
  2. Install dependencies:

    npm install
  3. Run the development server:

    npm run dev
  4. Open your browser and navigate to:

    http://localhost:3000
    

Build for Production

# Create optimized production build
npm run build

# Start production server
npm start

πŸ“ Project Structure

profile/
β”œβ”€β”€ public/                      # Static assets
β”‚   β”œβ”€β”€ Mpho-Mofokeng-CV.pdf    # Resume/CV file
β”‚   β”œβ”€β”€ manifest.json            # PWA manifest
β”‚   └── robots.txt               # SEO robots file
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                     # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ admin/              # Admin panel (protected)
β”‚   β”‚   β”œβ”€β”€ blog/               # Blog pages
β”‚   β”‚   β”‚   β”œβ”€β”€ [slug]/        # Individual blog post pages
β”‚   β”‚   β”‚   └── page.tsx       # Blog listing page
β”‚   β”‚   β”œβ”€β”€ globals.css         # Global styles
β”‚   β”‚   β”œβ”€β”€ layout.tsx          # Root layout with metadata
β”‚   β”‚   └── page.tsx            # Homepage
β”‚   β”œβ”€β”€ components/             # Reusable React components
β”‚   β”‚   β”œβ”€β”€ AnimatedBackground.tsx
β”‚   β”‚   β”œβ”€β”€ BlogCard.tsx
β”‚   β”‚   β”œβ”€β”€ BlogEditor.tsx
β”‚   β”‚   β”œβ”€β”€ FloatingElements.tsx
β”‚   β”‚   β”œβ”€β”€ MobileMenu.tsx
β”‚   β”‚   β”œβ”€β”€ ParticleSystem.tsx
β”‚   β”‚   └── TypewriterText.tsx
β”‚   β”œβ”€β”€ contexts/               # React Context providers
β”‚   β”‚   └── BlogContext.tsx
β”‚   β”œβ”€β”€ data/                   # Data and content
β”‚   β”‚   └── blog-posts.ts       # Blog posts data
β”‚   β”œβ”€β”€ types/                  # TypeScript type definitions
β”‚   β”‚   └── blog.ts
β”‚   └── lib/                    # Utility functions (if any)
β”œβ”€β”€ .eslintrc.json              # ESLint configuration
β”œβ”€β”€ .gitignore                  # Git ignore rules
β”œβ”€β”€ next.config.ts              # Next.js configuration
β”œβ”€β”€ package.json                # Dependencies and scripts
β”œβ”€β”€ postcss.config.mjs          # PostCSS configuration
β”œβ”€β”€ tailwind.config.ts          # Tailwind CSS configuration
β”œβ”€β”€ tsconfig.json               # TypeScript configuration
└── README.md                   # This file

πŸ“ Blog System

The portfolio includes a fully functional blog system with:

  • Categories: Quality Assurance, Blockchain, Education, Technology, Personal
  • Features: Search, category filtering, tags, read time estimation
  • Dynamic Routing: Individual pages for each blog post
  • Responsive Cards: Beautiful blog post previews with animations
  • Data Storage: Browser localStorage for client-side persistence

Blog Data Structure

Blog posts are stored in src/data/blog-posts.ts with the following structure:

{
  id: string
  title: string
  slug: string
  excerpt: string
  content: string
  category: BlogCategory
  date: string
  readTime: string
  tags: string[]
  published: boolean
}

🎨 Customization

Color Scheme

The color palette is defined in tailwind.config.ts:

colors: {
  primary: {
    50: '#eff6ff',
    // ... blue shades
    900: '#1e3a8a',
  },
  secondary: {
    50: '#f0fdf4',
    // ... green shades
    900: '#14532d',
  }
}

Personal Information

Update your details in the following files:

  1. Homepage (src/app/page.tsx):

    • Hero section (name, title, description)
    • About section (bio, professional focus)
    • Skills section (technologies, tools)
    • Projects section (current work)
    • Contact section (email, social links)
  2. Metadata (src/app/layout.tsx):

    • SEO meta tags
    • Open Graph data
    • Site title and description
  3. CV/Resume (public/Mpho-Mofokeng-CV.pdf):

    • Replace with your own PDF resume

πŸ“ˆ Performance Metrics

Optimized for excellent performance scores:

  • ⚑ Lighthouse Score: 95+ across all categories
  • 🎯 First Contentful Paint: <1.5s
  • πŸ–ΌοΈ Largest Contentful Paint: <2.5s
  • πŸ“Š Cumulative Layout Shift: <0.1
  • πŸš€ Time to Interactive: <3s

Performance Features

  • Static page generation where possible
  • Optimized images and assets
  • Code splitting and lazy loading
  • Minimal JavaScript bundle size
  • Efficient CSS with Tailwind's purge

πŸš€ Deployment

Deploy to Vercel (Recommended)

This project is optimized for Vercel:

  1. Push to GitHub:

    git add .
    git commit -m "Initial commit"
    git push origin main
  2. Import to Vercel:

    • Go to vercel.com
    • Click "New Project"
    • Import your GitHub repository
    • Vercel will auto-detect Next.js settings
  3. Deploy:

    • Click "Deploy"
    • Your site will be live in minutes
    • Automatic deployments on every push

Deploy to Other Platforms

The project can also be deployed to:

  • Netlify: Use the Next.js plugin
  • AWS Amplify: Connect your repository
  • Railway: One-click deployment
  • Self-hosted: Use npm run build and npm start

🌐 Environment Variables

No environment variables are required for basic functionality. The blog system uses browser localStorage for data persistence.

For production deployments, consider adding:

# Optional: Analytics
NEXT_PUBLIC_GA_ID=your-google-analytics-id

# Optional: Contact form backend
NEXT_PUBLIC_FORM_ENDPOINT=your-form-endpoint

🀝 Contributing

This is a personal portfolio project, but suggestions and feedback are welcome!

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

πŸ“ž Contact

Mpho Alphios Mofokeng (Kahuna)


πŸ“„ License

This project is open source and available under the MIT License.


πŸ™ Acknowledgments


Built with ❀️ by Mpho Alphios Mofokeng (Kahuna)

Empowering the next generation through technology, mentorship, and innovation

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors