# dazering/homelibprot architecture

> Architecture diagram of the GitHub repository dazering/homelibprot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dazering/homelibprot
- Repository: https://github.com/dazering/homelibprot

## Overview

HomeLibProt is a fiction-book catalog based on INPX. Its documented collection workflow includes importing INP lines, filtering authors by included language, building hierarchical author search, and validating INPX/archive consistency; the Collection Manager also handles SQL-dump import, INPX generation, book downloads, and archive merging. The supplied tree contains only domain data-access code, so it does not establish how those application stages call one another. The graph therefore emphasizes the visible persistence boundary and the sampled author/search operations; other documented capabilities are retained as unsampled subsystems, without speculative wiring.

Main entry points: [`HomeLibProt.Domain/DataAccess/Authors.cs`](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authors.cs) (Author access), [`HomeLibProt.Domain/DataAccess/Authorships.cs`](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authorships.cs) (Authorship access), [`HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchNodes.cs`](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchNodes.cs) (Search nodes), [`HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchResults.cs`](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchResults.cs) (Search results)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Catalog data"]
  node_authors["Author access<br/>[Authors.cs]"]
  node_authorships["Authorship access<br/>[Authorships.cs]"]
  node_books["Book access<br/>[Books.cs]"]
  node_archives["Archive access<br/>[Archives.cs]"]
  node_languages["Language access<br/>[Languages.cs]"]
  node_genres["Genre access<br/>[Genres.cs]"]
  node_keywords["Keyword access<br/>[Keywords.cs]"]
  node_series["Series access<br/>[Series.cs]"]
  node_rates["Rating access<br/>[Rates.cs]"]
end

subgraph group_search["Author search"]
  node_hierarchical_search["Hierarchical author search"]
  node_search_nodes["Search nodes<br/>[SearchNodes.cs]"]
  node_search_results["Search results<br/>[SearchResults.cs]"]
end

subgraph group_collection["Collection capabilities"]
  node_collection_importer["Collection importer<br/>[HomeLibProt.Domain]"]
  node_inp_import["INP line import<br/>[HomeLibProt.Domain]"]
  node_author_filter["Language filtering<br/>[Authors.cs]"]
  node_archive_validation["Archive validation<br/>[HomeLibProt.Domain]"]
  node_collection_manager["Collection manager<br/>[HomeLibProt.Domain]"]
  node_dump_download["SQL dump import<br/>[HomeLibProt.Domain]"]
  node_inpx_generation["INPX generation<br/>[HomeLibProt.Domain]"]
  node_book_download["Book downloads<br/>[HomeLibProt.Domain]"]
  node_archive_merge["Archive merging<br/>[HomeLibProt.Domain]"]
end

node_sqlite[("SQLite catalog")]

node_authors -->|"queries and writes"| node_sqlite
node_authorships -->|"queries and writes"| node_sqlite
node_search_nodes -->|"inserts nodes"| node_sqlite
node_search_results -->|"inserts results"| node_sqlite

click node_collection_importer "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_inp_import "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_author_filter "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authors.cs"
click node_hierarchical_search "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch"
click node_archive_validation "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_collection_manager "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_dump_download "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_inpx_generation "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_book_download "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_archive_merge "https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain"
click node_authors "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authors.cs"
click node_authorships "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authorships.cs"
click node_books "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Books.cs"
click node_archives "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Archives.cs"
click node_languages "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Languages.cs"
click node_genres "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Genres.cs"
click node_keywords "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Keywords.cs"
click node_series "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Series.cs"
click node_rates "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Rates.cs"
click node_search_nodes "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchNodes.cs"
click node_search_results "https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchResults.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_authors,node_authorships,node_books,node_archives,node_languages,node_genres,node_keywords,node_series,node_rates toneBlue
class node_hierarchical_search,node_search_nodes,node_search_results,node_sqlite toneAmber
class node_collection_importer,node_inp_import,node_author_filter,node_archive_validation,node_collection_manager,node_dump_download,node_inpx_generation,node_book_download,node_archive_merge toneMint
```

## Components

### Catalog data

- [Author access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authors.cs): `HomeLibProt.Domain/DataAccess/Authors.cs`
- [Authorship access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authorships.cs): `HomeLibProt.Domain/DataAccess/Authorships.cs`
- [Book access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Books.cs): `HomeLibProt.Domain/DataAccess/Books.cs`
- [Archive access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Archives.cs): `HomeLibProt.Domain/DataAccess/Archives.cs`
- [Language access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Languages.cs): `HomeLibProt.Domain/DataAccess/Languages.cs`
- [Genre access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Genres.cs): `HomeLibProt.Domain/DataAccess/Genres.cs`
- [Keyword access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Keywords.cs): `HomeLibProt.Domain/DataAccess/Keywords.cs`
- [Series access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Series.cs): `HomeLibProt.Domain/DataAccess/Series.cs`
- [Rating access](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Rates.cs): `HomeLibProt.Domain/DataAccess/Rates.cs`

### Author search

- [Hierarchical author search](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch): `HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch`
- [Search nodes](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchNodes.cs): `HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchNodes.cs`
- [Search results](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchResults.cs): `HomeLibProt.Domain/DataAccess/AuthorHierarchicalSearch/SearchResults.cs`

### Collection capabilities

- [Collection importer](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [INP line import](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [Language filtering](https://github.com/dazering/homelibprot/blob/master/HomeLibProt.Domain/DataAccess/Authors.cs): `HomeLibProt.Domain/DataAccess/Authors.cs`
- [Archive validation](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [Collection manager](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [SQL dump import](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [INPX generation](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [Book downloads](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`
- [Archive merging](https://github.com/dazering/homelibprot/tree/master/HomeLibProt.Domain): `HomeLibProt.Domain`

### Other components

- **SQLite catalog**

## Connections

- Author access → SQLite catalog: queries and writes
- Authorship access → SQLite catalog: queries and writes
- Search nodes → SQLite catalog: inserts nodes
- Search results → SQLite catalog: inserts results
