Skip to content

GhazTools/PersonalWebsite

Β 
Β 

Repository files navigation

PersonalWebsite

React TypeScript Vite MUI

A modern, VS Code-inspired developer portfolio built with React 18 + TypeScript + Vite.

Live Demo β€’ Report Bug β€’ Request Feature


✨ Features

🎨 Design & Layout

Feature Description
VS Code Theme Dark/light mode with Atom One Dark inspired colors
macOS-style UI Frosted glass effects, dock-style sidebar, modern tab bar
Responsive Design Mobile-first design with collapsible navigation
Smooth Animations Framer Motion powered transitions and hover effects

🧭 Navigation

Feature Description
Command Palette Press ⌘K (Mac) or Ctrl+K (Windows) to quick-navigate anywhere
Tab System VS Code-style file tabs with drag-and-drop reordering
Smart Sidebar Icon dock with tooltips and social links
Interactive 404 Terminal-style 404 page with autocomplete navigation

πŸ“„ Content Sections

Section Description
Resume/Experience Work history with filter by Work, Research, or All
Projects Categorized portfolio with tech badges and GitHub links
Skills Visual skill bars organized by category
Education Academic background with coursework details
Timeline Interactive career journey with animated milestones
GitHub Activity Live stats, repos, and recent activity from GitHub API
Achievements Certifications, awards, and accomplishments
Contact Email (with copy button), LinkedIn, GitHub links

πŸ”§ Developer Features

Feature Description
JSON-Driven Content All content loaded from JSON files - easy to customize
SEO Optimized Meta tags, JSON-LD structured data, Open Graph support
Accessibility Skip links, focus states, reduced motion support
Type-Safe Full TypeScript coverage with strict mode
Testing Vitest + React Testing Library setup

πŸ› οΈ Tech Stack

Category Technology
Framework React 18.3
Build Tool Vite 6.4
Language TypeScript 5.8
UI Library Material UI (MUI) 7.3
Animations Framer Motion 12.12
Icons FontAwesome 6.7 + MUI Icons
Routing React Router 6.28
Testing Vitest 4.0 + React Testing Library
Linting ESLint 9 + Prettier
Git Hooks Husky + lint-staged

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Installation

# Clone the repository
git clone https://github.com/GhazTools/PersonalWebsite.git
cd PersonalWebsite

# Install dependencies
pnpm install  # or npm install

# Start development server
pnpm dev  # or npm run dev

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

Build for Production

# Build
pnpm build  # or npm run build

# Preview production build
pnpm preview

Run Tests

pnpm test        # Run all tests
pnpm test:watch  # Watch mode

πŸ“ Project Structure

src/
β”œβ”€β”€ components/           # Reusable UI components
β”‚   β”œβ”€β”€ CommandPalette/   # ⌘K quick navigation
β”‚   β”œβ”€β”€ Timeline/         # Interactive career timeline
β”‚   β”œβ”€β”€ InteractiveResume/# Resume with filtering
β”‚   β”œβ”€β”€ SEO/              # Meta tags & JSON-LD
β”‚   └── ...
β”œβ”€β”€ views/                # Page-level components
β”‚   β”œβ”€β”€ ExperienceView/   # Resume/work experience
β”‚   β”œβ”€β”€ ProjectsView/     # Project portfolio
β”‚   β”œβ”€β”€ SkillsView/       # Skills showcase
β”‚   β”œβ”€β”€ EducationView/    # Education details
β”‚   β”œβ”€β”€ TimelineView/     # Career timeline
β”‚   β”œβ”€β”€ GitHubActivityView/
β”‚   β”œβ”€β”€ NotFoundView/     # Interactive 404 page
β”‚   └── ...
β”œβ”€β”€ layouts/              # Layout components
β”‚   └── Main/
β”‚       └── components/
β”‚           β”œβ”€β”€ Header/   # Tab bar
β”‚           β”œβ”€β”€ LeftBar/  # Sidebar dock
β”‚           β”œβ”€β”€ StatusBar/# Bottom status bar
β”‚           └── Explorer/ # File explorer panel
β”œβ”€β”€ data/                 # JSON content files
β”‚   └── json/
β”‚       β”œβ”€β”€ static.json   # Site metadata
β”‚       β”œβ”€β”€ contact.json  # Contact info
β”‚       └── ...
β”œβ”€β”€ theme/                # Design tokens
β”‚   β”œβ”€β”€ colors.ts
β”‚   β”œβ”€β”€ fonts.ts
β”‚   └── muiTheme.ts
β”œβ”€β”€ contexts/             # React contexts
β”‚   └── ThemeContext.tsx  # Dark/light mode
β”œβ”€β”€ hooks/                # Custom hooks
β”œβ”€β”€ models/               # TypeScript interfaces
β”œβ”€β”€ utils/                # Helper functions
└── styles/               # Global CSS
    β”œβ”€β”€ scrollbar.css
    └── accessibility.css

βš™οΈ Customization

Updating Content

All content is driven by JSON files in src/data/json/:

File Content
static.json Site title, description, greeting text
contact.json Email, social links
swe.json Work experience entries
ba.json Education and academic info
metadata.json Skills, projects, achievements

Adding a New Page

  1. Create a new view in src/views/YourView/index.tsx
  2. Add the route in src/data/index.tsx:
    {
      name: "yourpage.ext",
      url: "/yourpage",
      icon: "icon-name",
      color: "#hexcolor",
      comp: () => <YourView />,
    }
  3. The page will automatically appear in the sidebar and command palette

Changing Theme Colors

Edit src/theme/colors.ts and src/theme/muiTheme.ts to customize the color scheme.

Adding Social Links

Edit src/data/json/contact.json to add your social profiles.


🎹 Keyboard Shortcuts

Shortcut Action
⌘K / Ctrl+K Open command palette
↑ / ↓ Navigate suggestions
Enter Select / Navigate
Escape Close modal
Tab Autocomplete (in 404 terminal)

🌐 SEO Features

  • Meta Tags: Title, description, keywords for each page
  • Open Graph: Social sharing cards for LinkedIn, Twitter, Facebook
  • JSON-LD: Structured data for search engines (Person + WebSite schemas)
  • Sitemap: public/sitemap.xml for search engine indexing
  • Robots.txt: Search engine crawling rules

β™Ώ Accessibility

  • Skip to Content: Hidden link appears on Tab for keyboard users
  • Focus Indicators: Visible focus states for all interactive elements
  • Reduced Motion: Respects prefers-reduced-motion preference
  • High Contrast: Supports prefers-contrast: high
  • Semantic HTML: Proper heading hierarchy and ARIA labels
  • Keyboard Navigation: Full site navigable via keyboard

πŸ“± Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

πŸ“„ License

This project is open source under the GPL-3.0 License. See COPYING for details.


πŸ™ Credits


Made with ❀️ by Ghazanfar Shahbaz

About

Personal portfolio website repository.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 95.0%
  • HTML 4.1%
  • Other 0.9%