no account. no cloud. no tracking. scan it. shelve it. own your data.
This monorepo contains two related clients:
BOOK BAT: the active Svelte app for scanning, organizing, annotating, importing, exporting, and sharing your libraryBAOBAB: the Astro static site/client layer for presenting and publishing library dataThe repo is fully client-side. No hosted app database. No user accounts. BOOK BAT stores your library in browser localStorage.
Imports do not replace your whole library.
When you import a file:
Unknown Authorapps/webapp -> BOOK BAT Svelte 5 + Vite appapps/astro-site -> BAOBAB Astro sitedata/library.json -> canonical library dataset used for sync into app/site datahtml5-qrcodeInstall dependencies:
pnpm install
Run BOOK BAT:
pnpm dev:webapp
Run BAOBAB:
pnpm dev:astro
Generate local certificates:
pnpm certs:generate
Run the webapp over HTTPS:
pnpm dev:webapp:https
Then open:
https://localhost:5173https://<your-lan-ip>:5173Phone browsers may still require trusting the local certificate before camera APIs behave as a secure context.
The workspace syncs data/library.json into both apps.
Run manually:
pnpm data:sync
pnpm data:sync:dummy
pnpm data:apply ./my-export.json
Sync targets:
apps/webapp/src/public/library.jsonapps/astro-site/src/data/library.jsonExpected shape:
{
"version": 1,
"books": []
}
Build BOOK BAT:
pnpm build:webapp
Build BAOBAB:
pnpm build:astro
pnpm format
pnpm lint
pnpm test
pnpm build
For release preflight:
pnpm preflight
Two Netlify sites are connected to this repo:
bat.junglestar.org for BOOK BATbaobab.junglestar.org for BAOBABpnpm build:webappdist/webappnetlify.tomlscripts/netlify-ignore-webapp.shapps/astro-sitepnpm -C ../.. build:astrodistapps/astro-site/netlify.tomlscripts/netlify-ignore-astro.shBOOK BAT: https://bat.junglestar.orgBAOBAB: https://baobab.junglestar.orgFor SDK or commercial use, contact info@junglestar.org.