Skip to content

Personal website

License

Notifications You must be signed in to change notification settings

Toricane/Toricane.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1ebbf66ย ยทย ยท Sep 21, 2025

History

52 Commits
Aug 30, 2025
Aug 19, 2025
Mar 25, 2024
Aug 23, 2025
Aug 30, 2025
May 26, 2024
May 26, 2024
May 26, 2024
Aug 30, 2025
May 26, 2024
May 26, 2024
May 26, 2024
Aug 30, 2025
Sep 21, 2025
Aug 20, 2025
Sep 21, 2025

Repository files navigation

Portfolio Site โ€“ prajwal.is-a.dev

Modern, accessible personal portfolio website for Prajwal Prashanth, featuring a dynamic showcase of projects, hackathons, and awards. Built as a static site with progressive enhancement.

๐Ÿš€ Live Site

Visit: prajwal.is-a.dev

โœจ Features

๐ŸŽจ Design & Layoutyout

  • Split Hero Section: Engaging introduction with animated image carousel
  • Tabbed Content System: Interactive Projects / Hackathons / Awards sections
  • Coverflow Gallery: Smooth infinite-scroll image showcase
  • Dynamic Highlight Images: Tab-synchronized visual previews
  • Responsive Design: Mobile-first approach with adaptive layouts

๐ŸŽฏ User Experience

  • Accessibility First: ARIA labels, skip links, keyboard navigation
  • Progressive Enhancement: Works without JavaScript, enhanced with it
  • Smooth Animations: Subtle transitions and scroll behaviors
  • Social Integration: Newsletter widgets and social media links
  • PWA Ready: Web app manifest and service worker support

๐Ÿ”ง Technical Excellence

  • Framework-Free: Pure HTML, CSS, and vanilla JavaScript
  • Performance Optimized: Preloaded fonts, lazy loading, efficient rendering
  • SEO Enhanced: Open Graph, Twitter Cards, JSON-LD structured data
  • Content Management: JSON-driven content system for easy updates

๐ŸŽญ Interactive Elements

  • Footnote System: Hover/tap expandable footnotes in the introduction
  • Connection Pills: Animated social media links with labels
  • Scroll Interactions: Smart scroll-to-content and button hiding
  • Animation Mode: Special ?tap=true query parameter for enhanced animations
  • Dynamic Year: Auto-updating copyright year

๐Ÿ“ Project Structure

โ”œโ”€โ”€ index.html              # Main portfolio page
โ”œโ”€โ”€ styles.css              # Complete styling (1600+ lines)
โ”œโ”€โ”€ scripts.js              # Interactive functionality (950+ lines)
โ”œโ”€โ”€ data.json               # Content data (projects, hackathons, awards)
โ”œโ”€โ”€ site.webmanifest        # PWA configuration
โ”œโ”€โ”€ CNAME                   # Custom domain configuration
โ”œโ”€โ”€ assets/                 # Images and media
โ”‚   โ”œโ”€โ”€ northernlights.jpg     # Hero portrait image
โ”‚   โ”œโ”€โ”€ projects_highlight.jpg # Projects tab highlight
โ”‚   โ”œโ”€โ”€ hackathons_highlight.jpg # Hackathons tab highlight
โ”‚   โ”œโ”€โ”€ awards_highlight.jpg   # Awards tab highlight
โ”‚   โ””โ”€โ”€ tab-panels/            # Full-size images for projects/hackathons/awards
โ”‚       โ”œโ”€โ”€ [image files].jpg  # Original high-resolution images
โ”‚       โ””โ”€โ”€ preview/           # Optimized preview images (400px max width, WebP)
โ”‚           โ””โ”€โ”€ [image files].webp # Smaller versions for fast loading thumbnails
โ”œโ”€โ”€ connect4/               # Connect Four game sub-project
โ”‚   โ”œโ”€โ”€ index.html
โ”‚   โ”œโ”€โ”€ connect4_script.js
โ”‚   โ””โ”€โ”€ connect4_styles.css
โ””โ”€โ”€ [favicon files]         # Complete favicon set for all devices
et for all devices

๐Ÿ“ Content Management

All portfolio content is managed through data.json with the following structure:

Projects

{
     "projects": [
        {
              "title": "Project Name",
             "live": false,
             "from": "Organization/Context",
             "date": "Jan 2024 โ€“ Dec 2024",
             "description": "Detailed project description...",
             "tags": ["AI", "Edge", "C++"],
             "link": "https://project-url.com"
        }
    ]
}
}

Hackathons

{
     "hackathons": [
        {
              "when": "2025/03",
             "items": [
                {
                      "name": "Event Name โ€“ Project (Placement)",
                     "from": "Hackathon Name",
                     "description": "Project description...",
                     "badges": ["Winner", "In-Person"],
                     "link": "https://devpost-url.com",
                     "gold": true // Optional: adds special styling
                }
            ]
        }
    ]
} ]
}

Awards

{
     "awards": [
        {
              "when": "2025/06",
             "summary": "Optional grouping description",
             "items": [
                {
                      "name": "Award Name",
                     "from": "Issuing Organization",
                     "description": "Award details...",
                     "tags": ["Academic", "Leadership"],
                     "link": "https://award-link.com",
                     "gold": true // Adds special golden styling
                }
            ]
        }
    ]
} ]
}

๐Ÿ›  Development

Quick Start

# Clone the repository
git clone https:://github.com/Toricane/Toricane.github.io.git
cd Toricane.github.io



# Start local development server
python  -m http.server 8080

Navigate to http://localhost:8080

Special Features

  • Animation Mode: Add ?tap=true to see enhanced connection pill animations
  • Content Updates: Simply edit data.json and refresh โ€“ no build step required
  • Image Assets: Replace files in /assets/ to update highlight images
  • Image Optimization: Tab panel images use preview thumbnails (400px max width, WebP) for fast loading, with full-size originals shown in the viewer on click

Browser Support

  • Modern browsers with ES6+ support
  • Graceful degradation for older browsers
  • Mobile browsers with touch support

๐ŸŽฎ Bonus: Connect Four Game

Includes a complete Connect Four game with AI opponent:

  • Adjustable AI difficulty (1-10 levels)
  • Minimax algorithm with alpha-beta pruning
  • Clean, responsive game interface
  • Located at /connect4/

๐Ÿš€ Deployment

This site is configured for GitHub Pages deployment:

  • Custom Domain: prajwal.is-a.dev (configured via CNAME)
  • Branch: Deploys from main branch
  • Static Hosting: No server-side processing required

Deploy to GitHub Pages

  1. Fork/clone this repository
  2. Update CNAME with your domain (or remove for github.io subdomain)
  3. Edit data.json with your content
  4. Replace images in /assets/ with your own
  5. Enable GitHub Pages in repository settings

๐Ÿ“Š Performance Features

  • Lazy Loading: Images load only when needed
  • Font Optimization: Preloaded Google Fonts with font-display: swap
  • Efficient Scripts: Anime.js loaded on-demand
  • Minimal Dependencies: Only essential external resources
  • Mobile Optimized: Touch-friendly interactions and viewport handling

๐ŸŽจ Customization

Colors & Themingming

Main theme colors defined in CSS custom properties:

  • Background: #060809 (Dark)
  • Text: #d8e3ec (Light)
  • Accents: Various blue/green gradients

Layout Modifications

  • Hero section layout in .hero-inner
  • Tab system in .tabs and .tab-layout
  • Responsive breakpoints throughout CSS

Content Areas

  1. Hero Introduction: Edit directly in index.html
  2. Social Links: Update in the .connections section
  3. Portfolio Content: Manage via data.json
  4. Footnotes: Inline expandable explanations

Tagline Icons

Tagline icons (inline emoji-sized icons)

  • Path: assets/icons/

  • Purpose: Small square, transparent WEBP icons inserted immediately before certain links in the tagline (they behave like inline emoji and are sized via CSS to 1em).

  • Filenames referenced by index.html (default):

    • langara.webp
    • ubc.webp
    • jarvis.webp
    • vancouver-ai.webp
    • hackthenorth.webp
    • nwhacks.webp
  • Recommended source size: export square transparent WEBP files at 128ร—128 px for a good balance of quality and file size.

  • High-DPI / srcset (optional): provide a @2x version (256ร—256 px) and use srcset so browsers pick the best pixel density. Example markup used in index.html can be:

    img
         class="tag-icon"
         src="assets/icons/langara.webp"
         srcset="assets/icons/langara.webp 1x, assets/icons/[email protected] 2x"
         alt=""
         aria-hidden="true"
    
    />gt;
  • Notes:

    • The CSS forces the icon to render at 1em (roughly 16px on most browsers). Supplying a 128px source makes the icon crisp on Retina / high-DPR displays.
    • For accessibility the icons currently use empty alt and aria-hidden="true" because descriptive link text follows the icon; if you want the icon announced, set an appropriate alt value and remove aria-hidden.
    • If you prefer vector graphics, replace WEBP with SVG and update the src attributes accordingly.

Built with โค๏ธ by Prajwal Prashanth โ€ข Licensed under MIT

Tab Highlight Images

The Projects / Hackathons / Awards tabs support an optional visual highlight card on the right (or below on mobile). To enable, add any (or all) of these files under assets/:

assets/
	projects_highlight.jpg
	hackathons_highlight.jpg
	awards_highlight.jpg
pg

Filenames are hardโ€‘coded โ€“ adjust in scripts.js (highlightMap) if you prefer different names or formats (PNG / WebP also fine). Missing images are ignored gracefully.

Recommended size: For optimal quality across all screen sizes, use 1440px width (2x the maximum display width of 500px) with aspect ratio preserved.

Tab Panel Images

Images displayed in the Projects, Hackathons, and Awards sections support an optimized preview system for better performance:

  • Full-size images: Store original high-resolution images in assets/tab-panels/
  • Preview images: Create smaller WebP versions (400px max width, preserving aspect ratio) in assets/tab-panels/preview/
  • Automatic switching: Thumbnails load preview images for fast display; clicking opens the full-size image in a viewer
  • Fallback: If preview doesn't exist, falls back to the original image

This system reduces initial page load time while maintaining image quality in the viewer.

Roadmap Ideas

  • Replace placeholder widget text with real Substack & LinkedIn content (requires proxy / API integration)ion)
  • Add light / dark theme toggle (currently dark only)
  • Add print / PDF resume link
  • Lighthouse performance & a11y audit automation (GitHub Action)ion)

License

All custom code MIT. Personal content ยฉ Prajwal Prashanth.

Design inspired by kevinjosethomas.com (GitHub).

About

Personal website

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published