Skip to content

omer-zahid/Introduction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

311 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Introduction โ€” Omer Zahid

Welcome to the Introduction Project, a personal portfolio site and interactive AI experience built by Omer Zahid.

Identity note: Omer Zahid (with a space) is the canonical person name; domain strings like omerzahid represent the same identity and should not replace spaced-name profile/SEO text.

๐Ÿ”— Quick Links

๐ŸŒŒ Overview

This project combines a React + Vite frontend hosted on GitHub Pages with an AI-powered chatbot and an interactive space-themed shooting game. The site features:

  • ๐ŸŽฏ Interactive Portfolio - Showcase of projects and experience
  • ๐Ÿค– AI Chatbot - Matrix-themed terminal interface powered by Microsoft Phi-4 Mini
  • ๐ŸŽฎ Space Game - Darth Vader-themed shooting game with boss battles
  • ๐Ÿ“ Resume Generator - AI-powered tool to customize resumes for job applications
  • ๐Ÿš€ Custom Spaceship Cursor - Immersive space-themed UI

๐Ÿง  Tech Stack

Layer Technology Purpose
Frontend React 19 + Vite Fast, modern UI framework
Routing React Router 7 Client-side navigation
Styling TailwindCSS + Framer Motion Responsive design & animations
Hosting GitHub Pages Static site hosting
Backend (AI Proxy) Cloudflare Workers Secure API proxy for AI requests
AI Model Microsoft Phi-4 Mini Instruct Chat responses and content generation
Game Engine Canvas 2D API Custom game loop and physics
Build Tool Vite with compression Optimized production builds

๐Ÿ›ฐ๏ธ Features

AI Chatbot

  • Matrix-themed terminal interface with animated background
  • Markdown support for formatted responses
  • Typewriter effect for AI responses
  • Powered by Microsoft Phi-4 Mini through Cloudflare Workers proxy

Space Game

  • 2D shooting game with progressive difficulty
  • Multiple enemy types and boss battles
  • Mobile joystick support for touch devices
  • Custom spaceship cursor that doubles as the player

Resume Generator

  • AI-powered resume customization
  • Tailors resumes to specific job descriptions
  • Generates matching cover letters
  • Uses the same AI proxy infrastructure

About Page โ€” ProjectCard Hover Animations

Each project card on the About page displays a unique animated background when hovered (or focused via keyboard).

How it works:

  • Hovering (or keyboard-focusing) a card activates a Canvas-based particle animation scoped only to that card.
  • Animated emoji particles move across the card background based on the project's identity (e.g., ๐Ÿš—๐Ÿš™๐ŸŽ๏ธ cars for NYC LUX RIDE, โœˆ๏ธ๐Ÿ›ฉ๏ธ planes for Bell Aviation).
  • Particles are clipped to the card bounds and rendered below all card content via z-index, so title/description/button/tech stack remain fully legible.
  • Only the hovered card animates โ€” no other cards are affected.
  • Animation loop is managed with requestAnimationFrame and is fully cleaned up on mouse-leave or unmount.

Animation profile mapping (project animKey โ†’ theme):

animKey Project Symbols
nyc-lux-ride NYC LUX RIDE ๐Ÿš— ๐Ÿš™ ๐ŸŽ๏ธ ๐Ÿš•
bell-aviation Bell Aviation / ROMISOFT โœˆ๏ธ ๐Ÿ›ฉ๏ธ ๐Ÿ›ซ
tikka-masala Tikka Masala ๐ŸŒถ๏ธ ๐Ÿ› ๐Ÿซ™ ๐ŸŒฟ
skylight-ksa SkyLight | KSA โšก โœจ ๐Ÿ’ก ๐ŸŒŸ
deebas-daycare Deeba's Day Care ๐ŸŽˆ โญ ๐ŸŒˆ ๐ŸŽ€
oz-studios OZ Studios ๐Ÿ’ป ๐Ÿš€ โšก ๐ŸŒ
elia-barber ELIA Barber Shop โœ‚๏ธ ๐Ÿ’ˆ ๐Ÿช’ ๐Ÿ’‡
rashida-daycare Rashida Little Champs ๐ŸŒŸ ๐ŸŽ  ๐ŸŽจ ๐ŸŽช

Adding a new project animation profile:

  1. Add an animKey field to the project entry in src/features/resume/data/projects.js.
  2. Add a matching entry in src/features/resume/utils/animationProfiles.js with symbols, speed ranges (vxRange, vyRange), sizeRange, opacityRange, and count.
  3. If no profile exists for the key, the default sparkle profile (โœจ โญ ๐ŸŒŸ) is used automatically.

Accessibility & reduced-motion:

  • Keyboard users trigger the same animation via focus/blur events on the card.
  • When the OS/browser prefers-reduced-motion: reduce media query is active, the canvas stays cleared and no animation runs โ€” a clean static fallback.
  • The canvas layer has pointer-events: none and aria-hidden="true" so it never blocks links or assistive technology.

Relevant source files:

  • src/features/resume/data/projects.js โ€” animKey field per project
  • src/features/resume/utils/animationProfiles.js โ€” profile registry
  • src/features/resume/hooks/useCardHover.js โ€” hover/focus state hook
  • src/features/resume/components/CardHoverBackground.jsx โ€” Canvas animation component
  • src/features/resume/pages/About.jsx โ€” ProjectCard integration
  • src/features/resume/pages/About.css โ€” canvas positioning styles

โš™๏ธ Local Development

Prerequisites

  • Node.js 18+ and npm
  • Modern web browser

Setup Instructions

1๏ธโƒฃ Clone the Repository

git clone https://github.com/mz9201ju/Introduction.git
cd Introduction

2๏ธโƒฃ Install Dependencies

npm install

3๏ธโƒฃ Run Development Server

npm run dev

The site will be available at http://localhost:5173

4๏ธโƒฃ Build for Production

npm run build
npm run preview

Available Scripts

  • npm run dev - Start development server
  • npm run build - Build optimized production bundle
  • npm run preview - Preview production build locally
  • npm run lint - Run ESLint code quality checks
  • npm run test:e2e - Run Playwright browser smoke tests
  • npm run test:e2e:headed - Run Playwright tests in headed mode
  • npm run test:e2e:report - Open Playwright HTML report

Windows Validation (Agent/CI Friendly)

Use a single command for lint + build on Windows:

npm.cmd run lint ; npm.cmd run build

If PowerShell execution policy blocks scripts, use:

powershell -ExecutionPolicy Bypass -Command "npm.cmd run lint ; npm.cmd run build"

Playwright E2E

Install browser runtime once after dependencies are installed:

npx playwright install --with-deps chromium

GitHub workflow for agent/CI live tests:

  • Workflow file: .github/workflows/playwright-live.yml
  • Trigger manually with workflow_dispatch
  • Optional input target_url:
    • empty => tests run against local build preview
    • set URL => tests run against that live deployment

๐Ÿš€ Deployment

The site is automatically deployed to GitHub Pages when changes are pushed to the main branch. The build process:

  1. Vite builds optimized bundles with code splitting
  2. Assets are compressed using Brotli and Gzip
  3. Static files are deployed to gh-pages branch
  4. Available at https://www.omerzahid.com

๐Ÿ”Ž SEO Automation (No Manual Work)

If public/sitemap.xml declares a weekly cadence, it should be validated automatically every week.

Recommended setup (hands-off)

Use a scheduled GitHub Actions workflow (cron) that runs once per week and does this:

  1. Fetches and parses public/sitemap.xml
  2. Verifies required routes are present:
    • /
    • /about
    • /ask-me
    • /resume-generator
    • /darthVader
  3. Fails the workflow if any route is missing
  4. Opens an issue automatically (or sends notification) when sitemap drift is detected

Optional stronger automation

To avoid any manual updates, generate public/sitemap.xml during CI from a single route source (for example from the app route config) and commit the updated file automatically using a bot token.

Suggested schedule

  • Weekly check: every Monday (UTC)
  • Extra trigger: on every push to main

This ensures sitemap freshness stays aligned with the declared weekly cadence without your manual involvement.


โšก Performance Optimizations

This project has been optimized for performance:

  • Code Organization: Centralized theme constants and API utilities to reduce duplication
  • Bundle Optimization: Vite's automatic code splitting and tree shaking
  • Asset Compression: Brotli and Gzip compression for smaller file sizes
  • Lazy Loading: Route-based code splitting with React Router
  • Canvas Optimization: Efficient rendering with requestAnimationFrame
  • Memory Management: Proper cleanup of event listeners and intervals

๐Ÿ“ฌ Author

Omer Zahid
๐Ÿ“ง omer.zahid@mnsu.edu
๐ŸŒ www.omerzahid.com


๐ŸŽจ Assets & Credits


๐Ÿ›ก๏ธ License

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

About

Inshallah this is a start of a big project and Allah will help. Ameen

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors