7196f8e9309c7efa7f58ccef679f8295a390407f
Some checks failed
CI / UI (push) Failing after 22s
CI / Backend (push) Successful in 53s
Release / Test backend (push) Successful in 24s
Release / Check ui (push) Failing after 24s
Release / Docker / ui (push) Has been skipped
CI / Backend (pull_request) Successful in 25s
CI / UI (pull_request) Failing after 22s
Release / Docker / caddy (push) Successful in 56s
Release / Docker / backend (push) Successful in 1m38s
Release / Docker / runner (push) Successful in 3m14s
Release / Gitea Release (push) Has been skipped
- New /discover page with swipe UI: left=skip, right=like, up=read now, down=nope - Onboarding modal to collect genre/status preferences (persisted in localStorage) - 3-card stack with pointer-event drag, CSS fly-out animation, 5 action buttons - Tap card for preview modal; empty state with deck reset - Like/read-now auto-saves book to user library - POST /api/discover/vote + DELETE for deck reset - Discovery vote persistence via PocketBase discovery_votes collection - Fix duplicate books: dedup by slug in getBooksBySlugs - Fix WriteMetadata TOCTOU race: conflict-retry on concurrent insert Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
LibNovel
Self-hosted audiobook platform. Go backend + SvelteKit UI + MinIO/PocketBase/Meilisearch.
Requirements
- Docker + Docker Compose
- just
- Doppler CLI
Setup
doppler login
doppler setup # project=libnovel, config=prd
Usage
just up # start everything
just down # stop
just logs # tail all logs
just log backend # tail one service
just build # rebuild images
just restart # down + up
just secrets # view/edit secrets
Secrets
Managed via Doppler (project=libnovel, config=prd). No .env files.
To add or update a secret:
doppler secrets set MY_SECRET=value
Description