Skip to content

Latest commit

 

History

History
22 lines (13 loc) · 1.25 KB

File metadata and controls

22 lines (13 loc) · 1.25 KB

Architecture

ShelfReader uses SwiftUI for navigation and editorial layout, with SceneKit for the physical shelf and book geometry.

Data flow

  1. A reader imports a supported local document.
  2. LibraryStore copies it into the app container and derives bounded local metadata.
  3. A LibraryBook stores bibliographic identity, physical profile, theme, provenance, and reading progress.
  4. The shelf and catalogue render different presentations of the same model.
  5. The detail view opens the local reading path and writes progress back through LibraryStore.

AI boundary

BookMetadataRecognitionService handles one book per request. LibraryStore serializes requests so imports do not trigger concurrent OCR and network spikes. User-edited fields have higher provenance and must not be overwritten by automatic enrichment.

The optional provider does not own app state, render covers, or receive an entire library. Local validation and persistence remain separate steps.

Rendering boundary

BookshelfView owns SceneKit nodes, materials, lighting, gestures, inertia, selection, and haptics. SwiftUI views own navigation, accessibility, textual layout, settings, and sheets. This separation keeps high-frequency rendering state away from library persistence.