How seanr-scanr/scrapr works
scrapr is an Electron desktop application for discovering and browsing resources from scraper plugins, with URL discovery, thumbnail loading, and favorites. The renderer presents routed views and communicates with the main process over IPC; the main process dispatches requests to plugin sources and persists favorites. The tree also shows extension, source, and settings screens. Several renderer components and handlers were not excerpted, so uncertain UI-to-IPC links are omitted; plugin and IPC responsibilities are represented at the supported subsystem level.
Main entry points: internalPluginRepository.ts Plugin repository · favorites.ts Favorites handlers · sourceUtils.ts Source resolution · index.ts Main process
Components 26
Renderer UI
- Renderer app
src/renderer/src/main.tsx - Router
src/renderer/src/router.ts - Route tree
src/renderer/src/routeTree.gen.ts - Discovery view
src/renderer/src/routes/discover.$pluginId.$sourceId.tsx - URL parser
src/renderer/src/components/UrlParser/UrlParser.tsx - Favorites UI
src/renderer/src/hooks/useFavorites.ts - IPC client
src/renderer/src/services/ipcClient.ts - Descriptor client
src/renderer/src/services/descriptorClient.ts - Query client
src/renderer/src/services/queryClient.ts
Main IPC
- Main process
src/main/index.ts - Source handlers
src/main/ipc/source.ts - Plugin handlers
src/main/ipc/plugin.ts - Thumbnail handlers
src/main/ipc/thumbnail.ts - Favorites handlers
src/main/ipc/favorites.ts - Favorites store
src/main/ipc/favorites.ts
Scraper plugins
- Descriptor operations
src/main/utils/descriptorUtils.ts - Source resolution
src/main/utils/sourceUtils.ts - Plugin resolution
src/main/utils/pluginUtils.ts - Plugin repository
src/main/plugins/internalPluginRepository.ts - YNJN scraper
src/main/plugins/ynjnPlugin.ts - Comic Days scraper
src/main/plugins/comicDaysPlugin.ts - Priority queue
src/main/utils/priorityTaskQueue.ts
Shared contracts
- IPC contracts
src/shared/ipcContractTypes.ts - Plugin schemas
src/shared/pluginTypes.ts - Favorite schemas
src/shared/favoriteTypes.ts
Other components
- User
Connections 30
- User → Renderer app: uses
- Renderer app → Router: renders
src/renderer/src/main.tsx - Renderer app → Query client: provides
src/renderer/src/main.tsx - Router → Route tree: uses
src/renderer/src/router.ts - Router → Query client: shares
src/renderer/src/router.ts - Route tree → Discovery view: routes to
src/renderer/src/routeTree.gen.ts - Descriptor client → IPC client: uses
src/renderer/src/services/descriptorClient.ts - Main process → Source handlers: registers
src/main/index.ts - Main process → Plugin handlers: registers
src/main/index.ts - Main process → Thumbnail handlers: registers
src/main/index.ts - Main process → Favorites handlers: registers
src/main/index.ts - Source handlers → Plugin repository: resolves from
src/main/ipc/source.ts - Source handlers → Source resolution: uses
src/main/ipc/source.ts - Source handlers → Descriptor operations: uses
src/main/ipc/source.ts - Plugin handlers → Plugin repository: uses
src/main/ipc/plugin.ts - Plugin handlers → Plugin resolution: uses
src/main/ipc/plugin.ts - Thumbnail handlers → Plugin repository: resolves from
src/main/ipc/thumbnail.ts - Thumbnail handlers → Source resolution: uses
src/main/ipc/thumbnail.ts - Thumbnail handlers → Descriptor operations: loads through
src/main/ipc/thumbnail.ts - Favorites handlers → Plugin repository: resolves from
src/main/ipc/favorites.ts - Favorites handlers → Source resolution: uses
src/main/ipc/favorites.ts - Favorites handlers → Descriptor operations: fetches resource via
src/main/ipc/favorites.ts - Favorites handlers → Favorites store: reads and writes
src/main/ipc/favorites.ts - Plugin repository → YNJN scraper: includes
src/main/plugins/internalPluginRepository.ts - Plugin repository → Comic Days scraper: includes
src/main/plugins/internalPluginRepository.ts - YNJN scraper → Priority queue: uses
src/main/plugins/ynjnPlugin.ts - Source resolution → Descriptor operations: lists metadata with
src/main/utils/sourceUtils.ts - Source resolution → Plugin resolution: resolves plugin via
src/main/utils/sourceUtils.ts - Plugin repository → Plugin schemas: validates with
src/main/plugins/internalPluginRepository.ts - Favorites handlers → Favorite schemas: validates with
src/main/ipc/favorites.ts