Files
voculinux/web
Jatin K MalikandGitHub 071b7b5da3 perf: optimize PageSpeed Insights performance score (#105) (#106)
This commit implements comprehensive performance optimizations to improve
the PageSpeed Insights score from 70/100 to targeting 90+.

## Images & Assets (Est. 200+ KiB savings)
- Optimize vocalinux.png: 207KB → 44KB (79% reduction)
- Add WebP versions for all logo sizes (32, 64, 96, 192, 512px)
- Create og-image.webp: 274KB → 176KB (36% reduction)
- All WebP images provide ~92% size reduction over PNG

## JavaScript Optimization (Est. 84 KiB savings)
- Lazy load react-syntax-highlighter with next/dynamic
- Created CodeBlock component for async code highlighting
- Reduces initial bundle size by deferring heavy syntax highlighter

## Bundle Configuration
- Disable production source maps (reduces bundle size)
- Add .browserslistrc targeting modern browsers (est. 12 KiB savings)
- Remove legacy browser polyfills (IE11, old Android, etc.)

## Critical Rendering Path (Est. 300ms LCP improvement)
- Add preconnect hint for api.github.com
- Defer Google Analytics to lazyOnload strategy

## Caching Strategy
- Add cache headers configuration for static assets
- Cache-Control: public, max-age=31536000, immutable
- Applied to _next/static/* and image assets

## Accessibility Fixes
- Fix footer color contrast: text-zinc-500 → text-zinc-400
- Add prefers-reduced-motion media query support
- All animations respect user motion preferences

## Expected Impact
- Total estimated LCP reduction: ~1.5-2 seconds
- Bundle size reduction: ~100 KB
- Targeting 90+ performance score (up from 70)
2026-01-30 22:47:59 -08:00
..

Vocalinux Website

This is the official website for Vocalinux, a voice-to-text application for Linux systems. The website is built with Next.js and can be deployed as a static site to GitHub Pages.

🚀 Quick Start

Development

npm install
npm run dev

Building for Production

npm install
npm run build

The static files will be generated in the out/ directory.

📦 Deployment to GitHub Pages

  1. Push your changes to the main or master branch
  2. GitHub Actions will automatically build and deploy your site to the gh-pages branch
  3. Custom Domain: The site is configured for vocalinux.com
  4. The site will be available at https://vocalinux.com

Manual Deployment

If you prefer to deploy manually:

  1. Build the static site:

    cd web
    npm install
    npm run deploy
    
  2. The build includes:

    • Static HTML, CSS, and JavaScript files in out/
    • .nojekyll file for GitHub Pages compatibility
    • CNAME file pointing to vocalinux.com

Local Testing

To test the built site locally:

cd web/out
python3 -m http.server 3000

Then visit http://localhost:3000 in your browser.

🛠️ Build Scripts

  • npm run dev - Start development server
  • npm run build - Build static site for production
  • npm run deploy - Build and prepare for GitHub Pages (adds .nojekyll and CNAME)
  • npm run lint - Run ESLint
  • npm run typecheck - Run TypeScript type checking

📁 Project Structure

web/
├── src/
│   ├── app/
│   │   ├── layout.tsx          # Root layout
│   │   └── page.tsx            # Homepage
│   ├── components/
│   │   ├── dictation-overlay.tsx
│   │   ├── theme-toggle.tsx
│   │   └── ui/                 # Reusable UI components
│   ├── hooks/
│   └── lib/
├── public/                     # Static assets
├── out/                        # Generated static files (after build)
└── package.json

🎨 Features

  • Responsive Design - Works on desktop and mobile
  • Dark/Light Theme - Automatic theme switching
  • Modern UI - Built with Tailwind CSS and Framer Motion
  • SEO Optimized - Proper meta tags and structure
  • Fast Loading - Optimized static generation

🔧 Configuration

Custom Domain

If you want to use a custom domain:

  1. Update the deploy script in package.json to include your domain:

    "deploy": "next build && touch out/.nojekyll && echo 'yourdomain.com' > out/CNAME"
    
  2. Configure your domain's DNS to point to GitHub Pages

Base Path

If deploying to a subdirectory, update next.config.js:

const config = {
  basePath: '/your-subdirectory',
  // ... other config
}

🐛 Troubleshooting

Build Issues

  • "Module not found": Run npm install to ensure all dependencies are installed
  • TypeScript errors: Run npm run typecheck to see detailed type errors
  • ESLint errors: Run npm run lint:fix to automatically fix common issues

Deployment Issues

  • 404 on GitHub Pages: Ensure .nojekyll file exists in the out/ directory
  • Assets not loading: Check that basePath is correctly configured in next.config.js
  • Blank page: Check browser console for JavaScript errors

📝 License

This project is licensed under the same license as the main Vocalinux project.