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.