# 📖 Nexus Reader Nexus Reader is a state-of-the-art, cross-platform Blazor .NET 10 immersive e-book reader, powered by **Native AOT**, **Clean Architecture**, **CQRS**, and interactive **D3.js Relationship Graphs** built on vector-based AI semantics. --- ## ✨ Features & Architecture Highlights ### 📁 Ingestion & Description persistence - Extracted and persistent **book descriptions** from EPUB package metadata during book ingestion. - The `Description` field propagates cleanly from the `Ebook` entity through Mapster to `LastReadBookDto` and `UserProfileDto`. ### 🔗 Deep-Link Routing - Implemented deep-link route activation: `/reader/{bookId}?chapter=N`. - Allows instant resume of reading session coordinates and loads the specific chapter chapter directly via URL query parameters. ### 🛡️ Downstream AI Resilience - Standard resilience engine in `DependencyInjection.cs` utilizing the **Polly** package (`ai-retry`). - Automatically intercepts, handles, and retries on both rate-limits (`429 Too Many Requests`) and downstream capacity overloads (`503 ServiceUnavailable` / `high demand`). ### ⚙️ Concurrent Request Deduplication - Multi-client InteractiveAuto Blazor circuit synchronization is backed by a thread-safe active task registry in `KnowledgeService` which ensures that identical concurrent requests await a single shared task instance, eliminating redundant LLM queries. --- ## 🛠️ Build & Verification Gate Ensure the dotnet workload matches the active SDK, and compile the full solution utilizing: ```bash dotnet build NexusReader.slnx --no-restore ``` Run test suite: ```bash dotnet test --no-restore ``` ## 🗄️ Database Migrations Automatic database migrations at startup (`MigrateAsync()`) have been disabled to ensure compatibility with Native AOT compilation and prevent locking issues in multi-instance environments. To apply database migrations locally, run the EF Core migration command from the solution root: ```bash dotnet ef database update --project src/NexusReader.Infrastructure --startup-project src/NexusReader.Web ```