Deploying a 100% Static Privacy-First Tool on GitHub Pages

This entire scanner runs with zero backend — and that’s by design (NFR-03). Here’s how we made it work flawlessly on GitHub Pages project sites.

The Challenge

GitHub Pages project sites live at username.github.io/repo-name/. Most S chutMost SvelteKit apps break unless configured correctly.

Solution: adapter-static + Dynamic base Path

In svelte.config.js:

paths: { base: process.env.NODE_ENV === 'production' ? '/invisible-character-scanner' : '' }

And adapter-static with pages: 'docs' → GitHub Pages reads the docs folder automatically.

Result

  • Final build < 180 KB gzipped (NFR-03)
  • No 404s on refresh (prerendered routes)
  • All assets load correctly under subpath (FR-10)
  • Works offline with Service Worker potential

Why This Matters

No backend = no logs, no tracking, no data leaks. Your pasted code, chat logs, or API keys never leave your device — ever.

True privacy isn’t a feature. It’s the foundation.