# johnbazty/stiormoclibrary architecture

> Architecture diagram of the GitHub repository johnbazty/stiormoclibrary, 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/johnbazty/stiormoclibrary
- Repository: https://github.com/johnbazty/stiormoclibrary

## Overview

SmartLib is a library-management portal backed by a modular-monolith API and Supabase Postgres. Patrons and staff use the web portal to authenticate and perform library tasks; API modules handle catalog and physical-copy management, circulation, reservations, attendance, and related operations. The README also documents fines, printing, clearance, floor plans, notifications, dashboards, and reports. Sampled controller and repository code supports the circulation-to-data and reporting flows shown; several other module links reflect documented capabilities and the module layout, not inspected implementation details.

Main entry points: [`apps/api/src/modules/index.ts`](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/index.ts) (Module routing), [`apps/web/src/App.tsx`](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/App.tsx) (Web application), [`apps/api/src/modules/catalog/catalog.routes.ts`](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/catalog/catalog.routes.ts) (Catalog management), [`apps/api/src/modules/circulation/circulation.controller.ts`](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.controller.ts) (Loans and returns)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web portal"]
  node_portal["Web application<br/>[App.tsx]"]
  node_authui["Auth screens<br/>[LoginPage.tsx]"]
  node_catalogui["Catalog screens<br/>[BookCatalog.tsx]"]
  node_circulationui["Circulation screens<br/>[circulation-api.ts]"]
  node_serviceui["Service screens<br/>[attendance-api.ts]"]
end

subgraph group_identity["Identity"]
  node_authapi["JWT authentication"]
  node_authroutes["Auth routes<br/>[jwt-auth.routes.ts]"]
end

subgraph group_library["Library operations"]
  node_modules["Module routing<br/>[index.ts]"]
  node_catalog["Catalog management<br/>[catalog.routes.ts]"]
  node_inventory["Physical inventory"]
  node_circulation["Loans and returns"]
  node_circulationservice["Circulation rules"]
  node_circulationrepo["Loan data access"]
  node_reservations["Reservations"]
end

subgraph group_services["Library services"]
  node_attendance["Attendance"]
  node_fines["Fines"]
  node_printing["Print services<br/>[printing.routes.ts]"]
  node_clearance["Clearance"]
  node_floorplan["Floor plan"]
  node_notifications["Notifications"]
  node_dashboard["Dashboards"]
  node_reports["Reports and exports<br/>[reports.routes.ts]"]
  node_db[("Supabase Postgres")]
end

node_patron(("Patrons"))
node_staff(("Library staff"))
node_supastorage[("Supabase Storage")]

node_patron -->|"uses"| node_portal
node_staff -->|"uses"| node_portal
node_portal -->|"renders"| node_authui
node_portal -->|"renders"| node_catalogui
node_portal -->|"renders"| node_circulationui
node_portal -->|"renders"| node_serviceui
node_authui -->|"sign-in requests"| node_authroutes
node_authroutes -->|"dispatches"| node_authapi
node_authapi -->|"reads and writes"| node_db
node_modules -->|"mounts routes"| node_catalog
node_modules -->|"mounts routes"| node_inventory
node_modules -->|"mounts routes"| node_circulation
node_modules -->|"mounts routes"| node_reservations
node_modules -->|"mounts routes"| node_attendance
node_modules -->|"mounts routes"| node_fines
node_modules -->|"mounts routes"| node_printing
node_modules -->|"mounts routes"| node_clearance
node_modules -->|"mounts routes"| node_floorplan
node_modules -->|"mounts routes"| node_notifications
node_modules -->|"mounts routes"| node_dashboard
node_modules -->|"mounts routes"| node_reports
node_catalogui -->|"catalog requests"| node_catalog
node_circulationui -->|"loan requests"| node_circulation
node_serviceui -->|"attendance requests"| node_attendance
node_circulation -->|"calls"| node_circulationservice
node_circulationservice -->|"queries"| node_circulationrepo
node_circulationrepo -->|"reads and writes"| node_db
node_attendance -->|"reads and writes"| node_db
node_fines -->|"reads and writes"| node_db
node_dashboard -->|"queries"| node_db
node_printing -.->|"stores documents"| node_supastorage
node_catalog -.->|"stores covers"| node_supastorage

click node_portal "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/App.tsx"
click node_authui "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/auth/LoginPage.tsx"
click node_catalogui "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/catalog/BookCatalog.tsx"
click node_circulationui "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/circulation/circulation-api.ts"
click node_serviceui "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/attendance/attendance-api.ts"
click node_authapi "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/auth/jwt-auth.service.ts"
click node_authroutes "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/auth/jwt-auth.routes.ts"
click node_modules "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/index.ts"
click node_catalog "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/catalog/catalog.routes.ts"
click node_inventory "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/inventory/inventory.routes.ts"
click node_circulation "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.controller.ts"
click node_circulationservice "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.service.ts"
click node_circulationrepo "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.service.ts"
click node_reservations "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/reservations/reservations.routes.ts"
click node_attendance "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/attendance/attendance.controller.ts"
click node_fines "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/fines/fines.controller.ts"
click node_printing "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/printing/printing.routes.ts"
click node_clearance "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/clearance/clearance.routes.ts"
click node_floorplan "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/floor-plan/floor-plan.routes.ts"
click node_notifications "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/notifications/notifications.routes.ts"
click node_dashboard "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/dashboard/dashboard.controller.ts"
click node_reports "https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/reports/reports.routes.ts"

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_portal,node_authui,node_catalogui,node_circulationui,node_serviceui toneBlue
class node_authapi,node_authroutes,node_supastorage toneAmber
class node_modules,node_catalog,node_inventory,node_circulation,node_circulationservice,node_circulationrepo,node_reservations toneMint
class node_attendance,node_fines,node_printing,node_clearance,node_floorplan,node_notifications,node_dashboard,node_reports,node_db toneRose
class node_patron,node_staff toneIndigo
```

## Components

### Web portal

- [Web application](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/App.tsx): `apps/web/src/App.tsx`
- [Auth screens](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/auth/LoginPage.tsx): `apps/web/src/features/auth/LoginPage.tsx`
- [Catalog screens](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/catalog/BookCatalog.tsx): `apps/web/src/features/catalog/BookCatalog.tsx`
- [Circulation screens](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/circulation/circulation-api.ts): `apps/web/src/features/circulation/circulation-api.ts`
- [Service screens](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/web/src/features/attendance/attendance-api.ts): `apps/web/src/features/attendance/attendance-api.ts`

### Identity

- [JWT authentication](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/auth/jwt-auth.service.ts): `apps/api/src/modules/auth/jwt-auth.service.ts`
- [Auth routes](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/auth/jwt-auth.routes.ts): `apps/api/src/modules/auth/jwt-auth.routes.ts`

### Library operations

- [Module routing](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/index.ts): `apps/api/src/modules/index.ts`
- [Catalog management](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/catalog/catalog.routes.ts): `apps/api/src/modules/catalog/catalog.routes.ts`
- [Physical inventory](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/inventory/inventory.routes.ts): `apps/api/src/modules/inventory/inventory.routes.ts`
- [Loans and returns](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.controller.ts): `apps/api/src/modules/circulation/circulation.controller.ts`
- [Circulation rules](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.service.ts): `apps/api/src/modules/circulation/circulation.service.ts`
- [Loan data access](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/circulation/circulation.service.ts): `apps/api/src/modules/circulation/circulation.service.ts`
- [Reservations](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/reservations/reservations.routes.ts): `apps/api/src/modules/reservations/reservations.routes.ts`

### Library services

- [Attendance](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/attendance/attendance.controller.ts): `apps/api/src/modules/attendance/attendance.controller.ts`
- [Fines](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/fines/fines.controller.ts): `apps/api/src/modules/fines/fines.controller.ts`
- [Print services](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/printing/printing.routes.ts): `apps/api/src/modules/printing/printing.routes.ts`
- [Clearance](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/clearance/clearance.routes.ts): `apps/api/src/modules/clearance/clearance.routes.ts`
- [Floor plan](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/floor-plan/floor-plan.routes.ts): `apps/api/src/modules/floor-plan/floor-plan.routes.ts`
- [Notifications](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/notifications/notifications.routes.ts): `apps/api/src/modules/notifications/notifications.routes.ts`
- [Dashboards](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/dashboard/dashboard.controller.ts): `apps/api/src/modules/dashboard/dashboard.controller.ts`
- [Reports and exports](https://github.com/johnbazty/stiormoclibrary/blob/main/apps/api/src/modules/reports/reports.routes.ts): `apps/api/src/modules/reports/reports.routes.ts`
- **Supabase Postgres**

### Other components

- **Patrons**
- **Library staff**
- **Supabase Storage**

## Connections

- Patrons → Web application: uses
- Library staff → Web application: uses
- Web application → Auth screens: renders
- Web application → Catalog screens: renders
- Web application → Circulation screens: renders
- Web application → Service screens: renders
- Auth screens → Auth routes: sign-in requests
- Auth routes → JWT authentication: dispatches
- JWT authentication → Supabase Postgres: reads and writes
- Module routing → Catalog management: mounts routes
- Module routing → Physical inventory: mounts routes
- Module routing → Loans and returns: mounts routes
- Module routing → Reservations: mounts routes
- Module routing → Attendance: mounts routes
- Module routing → Fines: mounts routes
- Module routing → Print services: mounts routes
- Module routing → Clearance: mounts routes
- Module routing → Floor plan: mounts routes
- Module routing → Notifications: mounts routes
- Module routing → Dashboards: mounts routes
- Module routing → Reports and exports: mounts routes
- Catalog screens → Catalog management: catalog requests
- Circulation screens → Loans and returns: loan requests
- Service screens → Attendance: attendance requests
- Loans and returns → Circulation rules: calls
- Circulation rules → Loan data access: queries
- Loan data access → Supabase Postgres: reads and writes
- Attendance → Supabase Postgres: reads and writes
- Fines → Supabase Postgres: reads and writes
- Dashboards → Supabase Postgres: queries
- Print services → Supabase Storage: stores documents
- Catalog management → Supabase Storage: stores covers
