Fork: rename package and applicationId

This commit is contained in:
Atte149 2026-06-15 16:13:31 +03:00
parent b0ab7d320a
commit ad821faecd
577 changed files with 2463 additions and 2379 deletions

84
AGENTS.md Normal file
View file

@ -0,0 +1,84 @@
# 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 parser
- `data/` — repository, Room, DataStore, mappers, parsers, DI
- `domain/` — models, use cases, repository interfaces
- `presentation/` — ViewModels, MVI screens, navigator
- `ui/` — Compose UI
- `bookshelf-api` backend находится в `~/bookshelf/bookshelf-api/` (отдельный проект)
- Lissen (который дорабатывается параллельно) — `~/bookshelf/lissen/`
## API endpoints
- **bookshelf-api:** `http://bookshelf-api:8073` (или `https://tts.dueattendant149.org` после DNS)
- `GET /api/v1/books/libraries`
- `GET /api/v1/books/{item_id}`
- `GET /api/v1/books/library/{id}/search?q=...`
- `POST /api/v1/search`
- `POST /api/v1/tts`, `GET /api/v1/tts/{job_id}`, `GET /api/v1/tts/{job_id}/download`
- `GET /api/v1/tts/engines`, `GET /api/v1/tts/voices`
- `POST /api/v1/download`, `GET /api/v1/download/list`
- `POST /api/v1/podcasts`, `POST /api/v1/sources/yandex`
- **Audiobookshelf (напрямую):** для аудио файлов и обложек
- `GET /api/items/{id}/file/{ino}`
- `GET /api/items/{id}/download`
- `GET /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
```bash
./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 при существенных изменениях архитектуры