Admin d4f35a4899
Some checks failed
Release / Test backend (push) Failing after 18s
Release / Docker / backend (push) Has been skipped
Release / Docker / runner (push) Has been skipped
Release / Check ui (push) Successful in 45s
Release / Docker / caddy (push) Successful in 38s
Release / Docker / ui (push) Successful in 2m45s
Release / Gitea Release (push) Has been skipped
fix: prevent duplicate chapters_idx records + add dedup endpoint
- Fix upsertChapterIdx race: use conflict-retry pattern (mirrors WriteMetadata)
  so concurrent goroutines don't double-POST the same chapter number
- Add DeduplicateChapters to BookWriter interface and Store implementation;
  keeps the latest record per (slug, number) and deletes extras
- Wire POST /api/admin/dedup-chapters/{slug} handler in server.go
2026-04-04 21:00:10 +05:00

LibNovel

Self-hosted audiobook platform. Go backend + SvelteKit UI + MinIO/PocketBase/Meilisearch.

Requirements

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
No description provided
Readme 88 MiB
v4.5.5 Latest
2026-04-27 11:46:23 +05:00
Languages
Go 99.4%
Dockerfile 0.6%