How hard-rox/kathanika works
Kathanika is an integrated library system. A staff user works through the Angular application, which sends GraphQL requests to the .NET service; GraphQL exposes application operations, whose CQRS handlers use domain repositories backed by MongoDB. The tree shows cataloging, acquisition, patron, and circulation backend modules, while the sampled UI routes cover cataloging and purchase orders. Serials, reporting, discovery, notifications, and several patron-facing capabilities are README-documented but not represented by sampled implementation files; their wiring is therefore not inferred.
Main entry points: MediatRDispatcher.cs CQRS dispatcher · BibRecordRepository.cs Mongo repositories · SchemaConfigurations.cs GraphQL schema · app.routes.ts Feature routes
Components 22
Web client
- ILS web app
src/app-projects/ils-web/src/app/app.ts - Feature routes
src/app-projects/ils-web/src/app/app.routes.ts - Cataloging UI
src/app-projects/ils-web/src/app/features/cataloging/cataloging.routes.ts - Purchase orders UI
src/app-projects/ils-web/src/app/features/purchase-order/purchase-order.route.ts - GraphQL client
src/app-projects/ils-web/src/app/graphql/graphql.provider.ts
GraphQL API
- Web service
src/services/Kathanika.Web/Program.cs - GraphQL schema
src/infrastructure/Kathanika.Infrastructure.Graphql/SchemaConfigurations.cs - Catalog resolvers
src/infrastructure/Kathanika.Infrastructure.Graphql/Schema/BibRecordGraph/BibRecordQueries.cs - Acquisition resolvers
src/infrastructure/Kathanika.Infrastructure.Graphql/Schema/PurchaseOrderGraph/PurchaseOrderQueries.cs - Patron resolvers
src/infrastructure/Kathanika.Infrastructure.Graphql/Schema/PatronGraph/PatronQueries.cs
Application logic
- CQRS dispatcher
src/core/Kathanika.Application/Abstractions/Messaging/MediatRDispatcher.cs - Catalog operations
src/core/Kathanika.Application/Features/BibRecords/Queries/GetBibRecordsQueryHandler.cs - Circulation operations
src/core/Kathanika.Application/Features/BibItems/Commands/CheckOutBibItemCommandHandler.cs - Patron operations
src/core/Kathanika.Application/Features/Patrons/Queries/GetPatronsQueryHandler.cs - Acquisition operations
src/core/Kathanika.Application/Features/PurchaseOrders/Queries/GetPurchaseOrdersQueryHandler.cs - Other documented capabilities
Library domain
- Domain aggregates
src/core/Kathanika.Domain/Aggregates/BibRecordAggregate/BibRecord.cs
Infrastructure
- Mongo repositories
src/infrastructure/Kathanika.Infrastructure.Persistence/Repositories/BibRecordRepository.cs - Background workers
src/infrastructure/Kathanika.Infrastructure.Workers/Jobs/ProcessOutboxMessagesJob.cs - File storage
src/infrastructure/Kathanika.Infrastructure.Persistence/FileStorage/DiskFileStore.cs
Other components
- Library staff
- MongoDB
Connections 24
- Library staff → ILS web app: uses
- ILS web app → Feature routes: loads routes
- Feature routes → Cataloging UI: routes to
- Feature routes → Purchase orders UI: routes to
- Cataloging UI → GraphQL client: sends requests
- Purchase orders UI → GraphQL client: sends requests
- GraphQL client → Web service: GraphQL requests
- Web service → GraphQL schema: serves schema
- GraphQL schema → Catalog resolvers: exposes
- GraphQL schema → Acquisition resolvers: exposes
- GraphQL schema → Patron resolvers: exposes
- Catalog resolvers → CQRS dispatcher: dispatches
- Acquisition resolvers → CQRS dispatcher: dispatches
- Patron resolvers → CQRS dispatcher: dispatches
- CQRS dispatcher → Catalog operations: dispatches
- CQRS dispatcher → Circulation operations: dispatches
- CQRS dispatcher → Patron operations: dispatches
- CQRS dispatcher → Acquisition operations: dispatches
- Catalog operations → Mongo repositories: reads via
- Circulation operations → Mongo repositories: persists via
- Patron operations → Mongo repositories: uses
- Acquisition operations → Mongo repositories: uses
- Mongo repositories → MongoDB: reads/writes
- Background workers → MongoDB: processes outbox