* feat(web): add v0.10.1 updates and 5 new SEO pages ## New SEO Pages (5) - /vs-nerd-dictation/ - Vocalinux vs Nerd Dictation comparison - /whisper-model-guide/ - Whisper model sizes explained - /voice-typing-vscode/ - How to dictate in VS Code on Linux - /writers/ - Voice dictation for writers on Linux - /gnome-kde/ - Voice typing on GNOME vs KDE Plasma ## Existing Page Updates - homepage: Update JSON-LD featureList with v0.10.1 features, add new FAQs, link new pages in footer - troubleshooting: Add suspend/resume recovery, tray resources, settings dialog fixes - shortcuts: Add sound effects toggle, left/right modifier distinction, PTT improvements - wayland: Add keyboard layout preservation, clipboard fallback note - compare: Add engine switching safety notes - faq: Add suspend/resume and keyboard layout FAQs - alternatives: Link to new Nerd Dictation comparison - seo-subpage-shell: Add new pages to navigation - sitemap: Add 5 new URLs Fixes #257 (SEO expansion) * fix(web): add theme toggle to subpages, fix dark mode button contrast, simplify footer nav - Add light/dark theme toggle to SeoSubpageShell header (all subpages) - Fix duplicate useState/useEffect imports causing build error - Fix unclosed div in header markup - Add dark:text-black to CTA buttons across all 15 subpages for contrast on bright green bg - Add dark:text-black to footer CTA button in SeoSubpageShell - Simplify subpage footer to mainNavCategories (5 condensed categories) instead of full navCategories * fix(web): fix list items stacking, add all new pages to nav, restructure footer - Fix inline-flex → flex on all li elements across 13 pages so bullet points always stack on separate lines instead of running together horizontally - Add all 5 new SEO pages to subpage nav mainNavCategories (Whisper Models, For Writers, VS Code, GNOME vs KDE under Features/Use Cases; new Compare dropdown with vs Nerd Dictation, Alternatives, Offline, Open Source) - Add /vs-nerd-dictation/ to homepage footer Learn column - Restructure homepage footer from 2 crowded columns into 4 lean categorised columns (Get Started, Learn, Use Cases, Support) — responsive 2-col on mobile/tablet, 5-col on desktop
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
Automatic Deployment (Recommended)
- Push your changes to the
mainormasterbranch - GitHub Actions will automatically build and deploy your site to the
gh-pagesbranch - Custom Domain: The site is configured for
vocalinux.com - The site will be available at https://vocalinux.com
Manual Deployment
If you prefer to deploy manually:
-
Build the static site:
cd web npm install npm run deploy -
The build includes:
- Static HTML, CSS, and JavaScript files in
out/ .nojekyllfile for GitHub Pages compatibilityCNAMEfile pointing tovocalinux.com
- Static HTML, CSS, and JavaScript files in
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 servernpm run build- Build static site for productionnpm run deploy- Build and prepare for GitHub Pages (adds .nojekyll and CNAME)npm run lint- Run ESLintnpm 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:
-
Update the
deployscript inpackage.jsonto include your domain:"deploy": "next build && touch out/.nojekyll && echo 'yourdomain.com' > out/CNAME" -
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 installto ensure all dependencies are installed - TypeScript errors: Run
npm run typecheckto see detailed type errors - ESLint errors: Run
npm run lint:fixto automatically fix common issues
Deployment Issues
- 404 on GitHub Pages: Ensure
.nojekyllfile exists in theout/directory - Assets not loading: Check that
basePathis correctly configured innext.config.js - Blank page: Check browser console for JavaScript errors
📝 License
This project is licensed under the same license as the main Vocalinux project.