3.6 KiB
3.6 KiB
Book's Story — Bookshelf Fork
Форк
Acclorite/book-storyпод Bookshelf: audiobookshelf + bookshelf-api + TTS + offline.
Stack
- Язык: Kotlin 100%
- UI: Jetpack Compose + Material3
- DI: Dagger Hilt
- БД: Room
- Настройки: DataStore
- Сеть: Retrofit + OkHttp + Kotlinx Serialization
- Аудио: ExoPlayer (Media3) + MediaSession
- Фоновые задачи: WorkManager
- Читалка: собственная Book's Story (jsoup, pdfbox, commonmark)
- minSdk: 26 (план — поднять до 31 позже)
- compileSdk/targetSdk: 36
Goal
- Сохранить Material You reader Book's Story.
- Добавить поддержку bookshelf-api: библиотеки, поиск, TTS, подкасты, Яндекс/YouTube.
- Добавить аудиоплеер для аудиокниг из Audiobookshelf.
- Добавить offline-кэш и синхронизацию прогресса.
Layout
app/src/main/java/org/dueattendant149/bookshelf/— основной кодcore/— crash handler, typealias, commonmark parserdata/— repository, Room, DataStore, mappers, parsers, DIdomain/— models, use cases, repository interfacespresentation/— ViewModels, MVI screens, navigatorui/— Compose UI
bookshelf-apibackend находится в~/bookshelf/bookshelf-api/(отдельный проект)- Lissen (который дорабатывается параллельно) —
~/bookshelf/lissen/
API endpoints
- bookshelf-api:
http://bookshelf-api:8073(илиhttps://tts.dueattendant149.orgпосле DNS)GET /api/v1/books/librariesGET /api/v1/books/{item_id}GET /api/v1/books/library/{id}/search?q=...POST /api/v1/searchPOST /api/v1/tts,GET /api/v1/tts/{job_id},GET /api/v1/tts/{job_id}/downloadGET /api/v1/tts/engines,GET /api/v1/tts/voicesPOST /api/v1/download,GET /api/v1/download/listPOST /api/v1/podcasts,POST /api/v1/sources/yandex
- Audiobookshelf (напрямую): для аудио файлов и обложек
GET /api/items/{id}/file/{ino}GET /api/items/{id}/downloadGET /api/items/{id}/cover
Git
- origin:
https://git.dueattendant149.org/Atte149/book-story.git(Forgejo) - upstream:
https://github.com/Acclorite/book-story.git - Лицензия: GPL-3.0-only (как у оригинала)
Build
./gradlew :app:assembleDebug
Current Status
- Phase 1: fork + package rename completed.
- Next: Phase 2 — network layer (Retrofit + bookshelf-api client).
WARNs
- Не пушить в
upstream(Acclorite/book-story). Только вorigin(Forgejo). - Lissen остаётся живым проектом. Book's Story fork — отдельная ветка развития.
- Секреты (ABS token, API keys) хранить только в
.env/credentials.json/ DataStore, никогда в коде. - Package:
org.dueattendant149.bookshelf. Все ссылки наua.acclorite.book_storyв коде заменены; README оставлен с оригинальными F-Droid ссылками.
Typical tasks
- Добавить новый endpoint bookshelf-api
- Расширить
Book/BookEntityдля remote полей - Добавить аудиоплеер экран
- Добавить TTS экран
- Поднять minSdk, добавить новые разрешения
- Обновить AGENTS.md при существенных изменениях архитектуры