* feat(web): deslop marketing site with workstation craft identity Replace generic AI SaaS landing patterns with a deliberate Linux desk utility look: cool paper palette, Bricolage + Source Sans, solid type, editorial feature rows, and terminal install as first-class proof. Adds PRODUCT.md, DESIGN.md, and WEB-DESLOP-NOTES.md. Drops unused geist and react-intersection-observer. No product claim changes. * chore(web): drop local deslop working notes from PR WEB-DESLOP-NOTES.md was a firstmate/session artifact, not product docs. * fix(web): stop mobile horizontal overflow and harden viewport layout Long install URLs expanded the page past the phone width. Constrain terminal pre with break-all, min-w-0 columns, and overflow-x clip. Tighten mobile hero type and full-width CTAs. Add Playwright viewport QA script and jest checks that assert no overflow at desktop/tablet/mobile. * refactor(web): drop browser speech preview from marketing home Remove the cloud SpeechRecognition demo section and nav Demo link. Keep product truth: hero install, features, screenshots, engines. Fold shortcut/engine/audio links into the features intro. Delete unused LiveDemo component and its unit test. * chore(web): remove orphaned demo overlay and double-press hook Only LiveDemo used these; gone with the browser preview section. * feat(web): borrow PR #546 craft language into deslop home Merge closed redesign language onto feat/web-deslop-craft: pure white and near-black iron surfaces, emerald-committed palette, asymmetric hero with real app screenshots, full-bleed install strip, feature bento with tray/settings shots, and install-to-dictation steps. Keep Bricolage + Source Sans (not Geist), no browser speech demo, and mobile overflow guards. Update screenshots homepage expectations. * docs(design): align DESIGN.md tokens with PR #546 iron/emerald palette * fix(web): drop settings screenshot from installer details Uninstall sat too far below the list once the general-settings shot was in that column. Keep checklist, requirements, and uninstall only. * fix(web): raise light-mode primary and footer contrast Darken light emerald so white button text hits ~5:1 (was 3.4). Brighten install-strip and footer secondary text for legibility. Verified light/dark × desktop/tablet/mobile with no overflow. * fix(web): compact feature cards to kill empty vertical space Right-column tiles were h-full + justify-between next to a tall screenshot, so short copy left large voids. Use content-height cards with denser padding and inline link rows instead. * fix(web): pair settings shot with full feature rail Replace three orphan cards beside a tall dialog with a six-row feature panel that stretches with the screenshot frame. Crop the settings image with object-cover/object-top so heights match and no void sits next to the UI shot. * feat(web): apply homepage craft language to SEO child pages Rewrite SeoSubpageShell chrome (fixed nav, install pill, iron footer) to match the deslop home. Add subpage utilities and retoken all templated child routes: borders, radii, mono kickers, single emerald accent, terminal panels, no rainbow icon tiles or gradient cards. * fix(web): avoid invalid @apply hover:border-primary/40 in subpage-card * fix(web): rewrite subpage CSS without invalid Tailwind @apply * fix(web): color comparison X icons rose-red on alternatives Use soft rose (#c45c5c / #e08b8b) for no/cons marks so they read as distinct from emerald yes/checks without looking like form errors. * docs(web): move product/design docs under web/ and drop impeccable markers Keep PRODUCT.md and DESIGN.md next to the Next app (not repo root), add web/AGENTS.md as the entry point, and point the root AGENTS website section at those files. Strip tool-specific schema comments. * fix(web): use icon-only copy control on install terminal Replace the chunky Copy/Copied chip with a quiet clipboard icon that turns into a check on success. * fix(web): restyle system requirements as a spec rail Replace the nested bullet card with mono-label / value pairs under the installer section so it matches the craft language used elsewhere. * fix(web): center engine rows and quiet the Default badge Align name/badge with multi-line engine details on sm+; replace the filled green pill with a small mono outline chip.
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.