How bayang/jelu works
JELU is a self-hosted personal reading tracker: users manage books and reading activity through a Vue interface, which calls the backend API; services then apply domain logic and persist data. The product also supports reviews, metadata lookup, imports/exports, search, and multi-user access. The graph emphasizes relationships visible in the excerpts or README; some capabilities are included from documentation, but their internal wiring was not sampled, so those connections are omitted or marked unverified.
Main entry points: DataService.ts API client · App.vue JELU interface · router.ts Page routing · BookService.kt Book service
Components 22
Web client
- JELU interface
src/jelu-ui/src/App.vue - Page routing
src/jelu-ui/src/router.ts - API client
src/jelu-ui/src/services/DataService.ts - Book pages
src/jelu-ui/src/components/BookDetail.vue - Review pages
src/jelu-ui/src/components/ReviewList.vue - Import screens
src/jelu-ui/src/components/Imports.vue
API and domain
- HTTP API
src/main/kotlin/io/github/bayang/jelu/controllers/BooksController.kt - Review API
src/main/kotlin/io/github/bayang/jelu/controllers/ReviewsController.kt
Library features
- Book service
src/main/kotlin/io/github/bayang/jelu/service/BookService.kt - Review service
src/main/kotlin/io/github/bayang/jelu/service/ReviewService.kt - CSV import
src/main/kotlin/io/github/bayang/jelu/service/imports/CsvImportService.kt - Metadata lookup
src/main/kotlin/io/github/bayang/jelu/service/metadata/FetchMetadataService.kt - CSV export
src/main/kotlin/io/github/bayang/jelu/service/exports/CsvExportService.kt - Metadata providers
src/main/kotlin/io/github/bayang/jelu/service/metadata/providers
Persistence and search
- Book repository
src/main/kotlin/io/github/bayang/jelu/dao/BookRepository.kt - Review repository
src/main/kotlin/io/github/bayang/jelu/dao/ReviewRepository.kt - Search indexing
src/main/kotlin/io/github/bayang/jelu/service/SearchIndexService.kt - Lucene tools
src/main/kotlin/io/github/bayang/jelu/search/LuceneHelper.kt - SQLite data
src/main/kotlin/io/github/bayang/jelu/dao/BookTable.kt
Other components
- Reader
- Metadata sources
- CSV files
Connections 25
- Reader → JELU interface: uses
README.md - JELU interface → Page routing: routes through
src/jelu-ui/src/main.ts - JELU interface → API client: uses
src/jelu-ui/src/App.vue - Page routing → Book pages: routes to
src/jelu-ui/src/router.ts - Page routing → Review pages: routes to
src/jelu-ui/src/router.ts - Book pages → API client: requests data
- Review pages → API client: requests data
src/jelu-ui/src/components/ReviewList.vue - API client → HTTP API: calls API
src/jelu-ui/src/services/DataService.ts - HTTP API → Book service: delegates to
src/main/kotlin/io/github/bayang/jelu/controllers/BooksController.kt - Book service → Book repository: queries and updates
src/main/kotlin/io/github/bayang/jelu/service/BookService.kt - Book repository → SQLite data: persists
src/main/kotlin/io/github/bayang/jelu/dao/BookRepository.kt - API client → Review API: calls reviews
src/jelu-ui/src/services/DataService.ts - Review API → Review service: delegates to
src/main/kotlin/io/github/bayang/jelu/controllers/ReviewsController.kt - Review service → Review repository: reads and writes
src/main/kotlin/io/github/bayang/jelu/service/ReviewService.kt - Review repository → SQLite data: persists
- Reader → Import screens: starts import
README.md - Import screens → CSV import: submits import
- CSV import → Metadata lookup: fetches metadata
src/main/kotlin/io/github/bayang/jelu/service/imports/CsvImportService.kt - Metadata lookup → Metadata providers: dispatches to
src/main/kotlin/io/github/bayang/jelu/service/metadata/FetchMetadataService.kt - Metadata providers → Metadata sources: queries sources
- Reader → CSV export: requests export
- CSV export → CSV files: writes CSV
src/main/kotlin/io/github/bayang/jelu/service/exports/CsvExportService.kt - Book service → Search indexing: updates index
src/main/kotlin/io/github/bayang/jelu/service/BookService.kt - Search indexing → Book repository: loads books
src/main/kotlin/io/github/bayang/jelu/service/SearchIndexService.kt - Search indexing → Lucene tools: writes index
src/main/kotlin/io/github/bayang/jelu/service/SearchIndexService.kt