How lukelzlz/legado-server works
Legado Server is a private, self-hosted reading service with a React web client. The main workflow is a reader or browser using the client to search network book sources, open and read books, and persist shelf and reading state through the Ktor API. Separate product branches support local-book import, backup restore, content cleanup, speech, offline reading, progress sync, and WebDAV. The README documents the major capabilities; some subsystem links rely on that documentation because their implementation files were not sampled.
Main entry points: Routes.kt Ktor Routes · api.ts Web API Client · ReaderScreen.tsx Reader UI · RuleRunner.kt Source Rule Engine
Components 27
Web Reading Client
- Reader UI
web/src/ReaderScreen.tsx - Search and Shelf
web/src/searchStore.ts - Source Management
web/src/SourceGroupManagerModal.tsx - Offline and PWA
web/src/offlineStorage.ts - Reader Settings
web/src/readerSettings.ts - Web API Client
web/src/api.ts
API and Source Services
- Ktor Routes
server/src/main/kotlin/io/legado/server/Routes.kt - Session Auth
server/src/main/kotlin/io/legado/server/Auth.kt - Source Rule Engine
server/src/main/kotlin/io/legado/server/RuleRunner.kt - Source Codec
server/src/main/kotlin/io/legado/server/SourceCodec.kt - Network Security
server/src/main/kotlin/io/legado/server/NetworkSecurity.kt
Reading Capabilities
- Content Cleanup
server/src/main/kotlin/io/legado/server/ContentProcessor.kt - JavaScript Sandbox
server/src/main/kotlin/io/legado/server/JsSandbox.kt - Local Book Parser
server/src/main/kotlin/io/legado/server/LocalBookParser.kt - Backup Restore
server/src/main/kotlin/io/legado/server/BackupImporter.kt - TTS Sessions
server/src/main/kotlin/io/legado/server/TtsSessionService.kt - Edge TTS
server/src/main/kotlin/io/legado/server/EdgeTtsService.kt - Book Cache
server/src/main/kotlin/io/legado/server/BookCacheService.kt
Persistence and Sync
- SQLite Database
server/src/main/kotlin/io/legado/server/Database.kt - Progress Sync
server/src/main/kotlin/io/legado/server/BookProgressSync.kt - WebDAV Server
server/src/main/kotlin/io/legado/server/WebDavServer.kt - Source Subscriptions
server/src/main/kotlin/io/legado/server/SubscriptionService.kt
External Integrations
- Network Book Sources
- Edge TTS Service
Other components
- Browser Reader
- Legado Mobile
- WebDAV Clients
Connections 31
- Browser Reader → Reader UI: opens
- Reader UI → Web API Client: requests chapters
web/src/ReaderScreen.tsx - Search and Shelf → Web API Client: searches sources
web/src/searchStore.ts - Source Management → Web API Client: manages groups
web/src/SourceGroupManagerModal.tsx - Web API Client → Ktor Routes: calls REST API
web/src/api.ts - Ktor Routes → Session Auth: checks sessions
server/src/main/kotlin/io/legado/server/Routes.kt - Ktor Routes → Source Rule Engine: runs source rules
server/src/main/kotlin/io/legado/server/Routes.kt - Source Rule Engine → Network Book Sources: fetches source data
- Source Rule Engine → JavaScript Sandbox: executes scripts
server/src/main/kotlin/io/legado/server/RuleRunner.kt - Ktor Routes → Content Cleanup: processes content
server/src/main/kotlin/io/legado/server/Routes.kt - Content Cleanup → JavaScript Sandbox: runs replacement scripts
server/src/main/kotlin/io/legado/server/ContentProcessor.kt - Ktor Routes → Local Book Parser: parses uploads
server/src/main/kotlin/io/legado/server/Routes.kt - Ktor Routes → Backup Restore: imports backups
- Reader UI → Reader Settings: uses settings
web/src/ReaderScreen.tsx - Reader UI → Offline and PWA: reads offline chapters
web/src/ReaderScreen.tsx - Offline and PWA → Web API Client: queues progress
web/src/api.ts - Ktor Routes → TTS Sessions: manages sessions
server/src/main/kotlin/io/legado/server/Routes.kt - TTS Sessions → Edge TTS: streams synthesis
server/src/main/kotlin/io/legado/server/TtsSessionService.kt - Edge TTS → Edge TTS Service: requests audio
- Ktor Routes → Book Cache: schedules caching
server/src/main/kotlin/io/legado/server/Routes.kt - Book Cache → SQLite Database: updates cache state
server/src/main/kotlin/io/legado/server/BookCacheService.kt - Ktor Routes → SQLite Database: reads and writes
server/src/main/kotlin/io/legado/server/Routes.kt - Ktor Routes → Progress Sync: syncs progress
server/src/main/kotlin/io/legado/server/Routes.kt - Legado Mobile → WebDAV Server: syncs progress
- WebDAV Clients → WebDAV Server: mounts files
- Ktor Routes → WebDAV Server: serves WebDAV
- Ktor Routes → Source Subscriptions: updates subscriptions
server/src/main/kotlin/io/legado/server/Routes.kt - Source Subscriptions → SQLite Database: loads subscriptions
server/src/main/kotlin/io/legado/server/SubscriptionService.kt - Source Subscriptions → Network Security: validates targets
server/src/main/kotlin/io/legado/server/SubscriptionService.kt - Source Rule Engine → Network Security: validates requests
server/src/main/kotlin/io/legado/server/RuleRunner.kt - Source Codec → SQLite Database: encodes source data
server/src/main/kotlin/io/legado/server/Database.kt