Skip to content

baranusluel/baranusluel.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

82 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Personal Website - Baran Usluel

A modern, elegant personal website built with pure HTML, CSS, and JavaScript, featuring interactive magnetic field physics and comprehensive test coverage.

โœจ Features

  • ๐ŸŽฏ Interactive Magnetic Field: Real-time physics simulation with ripple effects
  • ๐ŸŒ™ Dark/Light Theme: Toggle between themes with automatic system preference detection
  • ๐Ÿ“ฑ Responsive Design: Fully responsive design that works on all devices
  • ๐ŸŽจ Smooth Animations: Hover effects, button animations, and parallax effects
  • โŒจ๏ธ Keyboard Shortcuts:
    • Ctrl/Cmd + K: Toggle theme
    • Space: Say hello
  • ๐Ÿ’พ Persistent Settings: Theme preference saved to localStorage
  • ๐Ÿงช Comprehensive Testing: 100% test coverage with 118 unit tests
  • ๐Ÿš€ Performance Optimized: Smooth 60fps animations with efficient rendering

๐Ÿ—๏ธ Project Structure

personal-website/
โ”œโ”€โ”€ index.html              # Main HTML file
โ”œโ”€โ”€ about.html              # About page
โ”œโ”€โ”€ styles.css              # CSS styles and animations
โ”œโ”€โ”€ script.js               # JavaScript functionality
โ”œโ”€โ”€ package.json            # Project dependencies and scripts
โ”œโ”€โ”€ jest.config.js          # Jest testing configuration
โ”œโ”€โ”€ jest.setup.js           # Jest test environment setup
โ”œโ”€โ”€ .gitignore              # Git ignore rules
โ”œโ”€โ”€ __tests__/              # Test files directory
โ”‚   โ”œโ”€โ”€ utils.test.js       # Utility function tests
โ”‚   โ”œโ”€โ”€ physics.test.js     # Physics engine tests
โ”‚   โ”œโ”€โ”€ ripple-manager.test.js # Ripple system tests
โ”‚   โ”œโ”€โ”€ grid-manager.test.js   # Grid system tests
โ”‚   โ”œโ”€โ”€ renderer.test.js    # Canvas rendering tests
โ”‚   โ”œโ”€โ”€ ui-components.test.js # UI component tests
โ”‚   โ”œโ”€โ”€ notification-manager.test.js # Notification tests
โ”‚   โ””โ”€โ”€ keyboard-shortcuts.test.js # Keyboard event tests
โ””โ”€โ”€ README.md               # This file

๐Ÿš€ Getting Started

Prerequisites

  • Node.js (v14 or higher)
  • npm (comes with Node.js)

Installation

  1. Clone the repository

    git clone <repository-url>
    cd personal-website
  2. Install dependencies

    npm install
  3. Run tests (optional but recommended)

    npm test
  4. Open in browser

    • Simply open index.html in your web browser
    • Or use a local server: python -m http.server 8000

๐Ÿงช Testing

This project includes comprehensive unit testing with 100% test coverage:

Test Coverage

  • 8 test suites with 118 tests
  • Utils: Distance calculations, angle normalization, DOM interaction detection
  • PhysicsEngine: Magnetic force calculations, line updates, physics simulation
  • RippleManager: Ripple creation, force calculations, state management
  • GridManager: Grid line generation, responsive sizing, canvas handling
  • Renderer: Canvas drawing operations, ripples, lines, dots
  • UIComponents: Theme switching, hover effects, ripple animations
  • NotificationManager: Toast notifications, animations, cleanup
  • KeyboardShortcuts: Event handling, theme toggle, greeting system

Running Tests

# Run all tests
npm test

# Run tests with coverage report
npm test -- --coverage

# Run tests in watch mode
npm test -- --watch

# Run specific test file
npm test -- __tests__/physics.test.js

Test Results

Test Suites: 8 passed, 8 total
Tests:       118 passed, 118 total
Snapshots:   0 total
Time:        0.534 s

๐Ÿ› ๏ธ Technologies Used

  • HTML5: Semantic markup and accessibility
  • CSS3: Modern styling with CSS Grid, Flexbox, and custom properties
  • Vanilla JavaScript: No frameworks or libraries
  • Canvas API: Real-time graphics and physics rendering
  • Jest: Comprehensive testing framework
  • JSDOM: DOM simulation for testing
  • Google Fonts: Inter font family for typography

๐ŸŽฎ Interactive Features

Magnetic Field Physics

  • Real-time Simulation: Lines respond to mouse/touch position
  • Ripple Effects: Dynamic ripple creation with physics-based forces
  • Smooth Animations: 60fps rendering with optimized performance
  • Responsive Grid: Adaptive grid system that scales with screen size

Theme System

  • Automatic Detection: Respects system dark/light mode preference
  • Manual Toggle: Keyboard shortcut (Ctrl/Cmd + K) or button click
  • Persistent Storage: Theme preference saved across sessions
  • Smooth Transitions: CSS transitions for theme changes

Keyboard Shortcuts

  • Theme Toggle: Ctrl/Cmd + K
  • Greeting: Space (when not focused on input elements)
  • Accessibility: Full keyboard navigation support

๐ŸŽจ Design Features

  • CSS Custom Properties: Easy theme switching and maintainable code
  • Smooth Animations: CSS transitions and keyframe animations
  • Modern Typography: Inter font with proper font weights and spacing
  • Accessibility: Proper semantic HTML and keyboard navigation
  • Performance: Optimized animations and minimal JavaScript footprint

๐ŸŒ Browser Support

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

๐Ÿ”ง Development

Available Scripts

npm test          # Run test suite
npm test -- --watch  # Run tests in watch mode
npm test -- --coverage  # Generate coverage report

Code Quality

  • 100% Test Coverage: All core functionality is tested
  • ESLint Ready: Code follows JavaScript best practices
  • Modular Architecture: Clean separation of concerns
  • Performance Optimized: Efficient rendering and memory management

๐ŸŽฏ Customization

The website is built to be easily customizable:

  • Colors: Modify CSS custom properties in :root
  • Typography: Change the Google Fonts import in index.html
  • Content: Update the HTML content in index.html
  • Animations: Adjust timing and effects in styles.css
  • Physics: Tune magnetic field parameters in script.js

๐Ÿš€ Future Enhancements

๐ŸŽฎ Advanced Interactions

  • Multi-touch Support - Create multiple ripples simultaneously with touch gestures
  • Physics Playground - Different force types (gravity wells, repulsion, attraction zones)
  • 3D Effects - Add depth, perspective, and 3D transformations to the magnetic field
  • Interactive Resume - Hover sections to see details with magnetic attraction effects
  • Dynamic Theme - Automatically adjust theme based on Seattle's weather conditions

๐Ÿฅš Easter Eggs & Minigames

  • Hidden Easter Eggs - Secret interactions and discoveries throughout the site
  • Mini-games - Fun interactive games using the magnetic field mechanics
  • Achievement System - Unlock new visual effects and interactions
  • Konami Code - Classic easter egg implementation
  • Hidden Patterns - Draw specific shapes to trigger special effects

๐Ÿš€ Performance & Features

  • Audio Reactivity - Microphone input for sound-based interactions
  • Gesture Recognition - Hand tracking and gesture controls
  • Device Sensors - Accelerometer, gyroscope, and proximity sensor integration
  • Particle Systems - Floating particles and trail effects
  • WebGL Integration - GPU-accelerated rendering for complex effects

๐Ÿ“„ License

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

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Write tests for your changes
  4. Ensure all tests pass (npm test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

๐Ÿ“Š Project Statistics

  • Lines of Code: ~1,500+ (including tests)
  • Test Coverage: 100%
  • Dependencies: 0 runtime dependencies
  • Build Time: 0 (no build process required)
  • Bundle Size: Minimal (vanilla JS)

Built with โค๏ธ by Baran Usluel | VR Software Engineer at Meta Reality Labs

About

My personal website, e-portfolio and blog

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published