# vergara-ben/ayla-library-system architecture

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

- Interactive diagram: https://gitdiagram.com/vergara-ben/ayla-library-system
- Repository: https://github.com/vergara-ben/ayla-library-system

## Overview

AYLA is a Django library-management system for staff, administrators, and patrons. Users enter through portal routes for catalogue lookup, circulation, patron visits, and floor-plan wayfinding; staff can also manage inventory and library operations. Domain services support authentication, reporting, analytics, and activity auditing, with Django models holding the system’s records. The map preserves documented route and import relationships; several capabilities are identified by the source index, but their implementations were not sampled, so their internal flows are left unspecified.

Main entry points: [`library/views.py`](https://github.com/vergara-ben/ayla-library-system/blob/main/library/views.py) (Portal views), [`library/models.py`](https://github.com/vergara-ben/ayla-library-system/blob/main/library/models.py) (Library records), [`library/desk.py`](https://github.com/vergara-ben/ayla-library-system/blob/main/library/desk.py) (Service desk), [`library/auth_utils.py`](https://github.com/vergara-ben/ayla-library-system/blob/main/library/auth_utils.py) (Authentication and access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portals["Portals and workflow"]
  node_routes["Application routes<br/>[urls.py]"]
  node_views["Portal views<br/>[views.py]"]
  node_desk["Service desk<br/>[desk.py]"]
  node_chat["Library chat<br/>[chat.py]"]
end

subgraph group_domain["Library operations"]
  node_models[("Library records<br/>[models.py]")]
  node_cardnumbers["Card numbers<br/>[cardnumbers.py]"]
  node_eligibility["Borrowing eligibility<br/>[eligibility.py]"]
  node_emails["Email notifications<br/>[emails.py]"]
end

subgraph group_space["Floor plans"]
  node_floorplan["Floor-plan management<br/>[floorplan_bulk.py]"]
  node_floor_undo["Floor-plan undo<br/>[floorplan_undo.py]"]
  node_floor_pdf["Floor-plan PDF<br/>[floorplan_pdf.py]"]
  node_routegen["Shelf routing<br/>[routegen.py]"]
end

subgraph group_insight["Reporting and audit"]
  node_reports["Reports and exports<br/>[reports.py]"]
  node_analytics["Library analytics<br/>[analytics.py]"]
  node_audit["Activity audit<br/>[audit.py]"]
end

subgraph group_platform["Access and messaging"]
  node_auth["Authentication and access<br/>[auth_utils.py]"]
  node_middleware["Request middleware<br/>[middleware.py]"]
  node_openstatus["Open-status controls<br/>[openstatus.py]"]
  node_modules["Permission modules<br/>[modules.py]"]
end

node_patron(("Patron"))
node_staff(("Staff / Admin"))

node_patron -->|"uses"| node_routes
node_staff -->|"uses"| node_routes
node_routes -->|"routes to"| node_views
node_routes -->|"routes to"| node_desk
node_routes -->|"routes to"| node_chat
node_views -->|"reads/writes"| node_models
node_views -->|"delegates to"| node_desk
node_views -->|"uses"| node_auth
node_views -->|"uses"| node_eligibility
node_views -->|"uses"| node_emails
node_views -->|"uses"| node_reports
node_views -->|"uses"| node_analytics
node_views -->|"uses"| node_audit
node_views -->|"uses"| node_floor_pdf
node_views -->|"uses"| node_routegen
node_views -->|"uses"| node_models
node_desk -->|"reads/writes"| node_models
node_desk -->|"uses catalogue helpers"| node_views
node_desk -->|"uses"| node_auth
node_desk -->|"uses"| node_audit
node_desk -->|"uses"| node_emails
node_models -->|"generates cards"| node_cardnumbers
node_models -->|"uses"| node_modules
node_models -->|"queried by"| node_analytics
node_analytics -->|"uses"| node_reports
node_reports -->|"queries"| node_models
node_floor_undo -->|"reads/writes"| node_models
node_floor_undo -->|"uses"| node_auth
node_floor_undo -->|"uses"| node_audit
node_floor_pdf -->|"uses"| node_reports
node_auth -->|"checks users"| node_models
node_auth -->|"uses"| node_audit
node_auth -->|"checks permissions"| node_modules
node_middleware -->|"queries"| node_models
node_middleware -->|"uses"| node_desk
node_openstatus -->|"reads/writes"| node_models
node_openstatus -->|"uses"| node_auth
node_openstatus -->|"uses"| node_audit

click node_routes "https://github.com/vergara-ben/ayla-library-system/blob/main/library/urls.py"
click node_views "https://github.com/vergara-ben/ayla-library-system/blob/main/library/views.py"
click node_desk "https://github.com/vergara-ben/ayla-library-system/blob/main/library/desk.py"
click node_chat "https://github.com/vergara-ben/ayla-library-system/blob/main/library/chat.py"
click node_models "https://github.com/vergara-ben/ayla-library-system/blob/main/library/models.py"
click node_cardnumbers "https://github.com/vergara-ben/ayla-library-system/blob/main/library/cardnumbers.py"
click node_eligibility "https://github.com/vergara-ben/ayla-library-system/blob/main/library/eligibility.py"
click node_emails "https://github.com/vergara-ben/ayla-library-system/blob/main/library/emails.py"
click node_floorplan "https://github.com/vergara-ben/ayla-library-system/blob/main/library/floorplan_bulk.py"
click node_floor_undo "https://github.com/vergara-ben/ayla-library-system/blob/main/library/floorplan_undo.py"
click node_floor_pdf "https://github.com/vergara-ben/ayla-library-system/blob/main/library/floorplan_pdf.py"
click node_routegen "https://github.com/vergara-ben/ayla-library-system/blob/main/library/routegen.py"
click node_reports "https://github.com/vergara-ben/ayla-library-system/blob/main/library/reports.py"
click node_analytics "https://github.com/vergara-ben/ayla-library-system/blob/main/library/analytics.py"
click node_audit "https://github.com/vergara-ben/ayla-library-system/blob/main/library/audit.py"
click node_auth "https://github.com/vergara-ben/ayla-library-system/blob/main/library/auth_utils.py"
click node_middleware "https://github.com/vergara-ben/ayla-library-system/blob/main/library/middleware.py"
click node_openstatus "https://github.com/vergara-ben/ayla-library-system/blob/main/library/openstatus.py"
click node_modules "https://github.com/vergara-ben/ayla-library-system/blob/main/library/modules.py"

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_routes,node_views,node_desk,node_chat toneBlue
class node_models,node_cardnumbers,node_eligibility,node_emails toneAmber
class node_floorplan,node_floor_undo,node_floor_pdf,node_routegen toneMint
class node_reports,node_analytics,node_audit toneRose
class node_auth,node_middleware,node_openstatus,node_modules,node_patron,node_staff toneIndigo
```

## Components

### Portals and workflow

- [Application routes](https://github.com/vergara-ben/ayla-library-system/blob/main/library/urls.py): `library/urls.py`
- [Portal views](https://github.com/vergara-ben/ayla-library-system/blob/main/library/views.py): `library/views.py`
- [Service desk](https://github.com/vergara-ben/ayla-library-system/blob/main/library/desk.py): `library/desk.py`
- [Library chat](https://github.com/vergara-ben/ayla-library-system/blob/main/library/chat.py): `library/chat.py`

### Library operations

- [Library records](https://github.com/vergara-ben/ayla-library-system/blob/main/library/models.py): `library/models.py`
- [Card numbers](https://github.com/vergara-ben/ayla-library-system/blob/main/library/cardnumbers.py): `library/cardnumbers.py`
- [Borrowing eligibility](https://github.com/vergara-ben/ayla-library-system/blob/main/library/eligibility.py): `library/eligibility.py`
- [Email notifications](https://github.com/vergara-ben/ayla-library-system/blob/main/library/emails.py): `library/emails.py`

### Floor plans

- [Floor-plan management](https://github.com/vergara-ben/ayla-library-system/blob/main/library/floorplan_bulk.py): `library/floorplan_bulk.py`
- [Floor-plan undo](https://github.com/vergara-ben/ayla-library-system/blob/main/library/floorplan_undo.py): `library/floorplan_undo.py`
- [Floor-plan PDF](https://github.com/vergara-ben/ayla-library-system/blob/main/library/floorplan_pdf.py): `library/floorplan_pdf.py`
- [Shelf routing](https://github.com/vergara-ben/ayla-library-system/blob/main/library/routegen.py): `library/routegen.py`

### Reporting and audit

- [Reports and exports](https://github.com/vergara-ben/ayla-library-system/blob/main/library/reports.py): `library/reports.py`
- [Library analytics](https://github.com/vergara-ben/ayla-library-system/blob/main/library/analytics.py): `library/analytics.py`
- [Activity audit](https://github.com/vergara-ben/ayla-library-system/blob/main/library/audit.py): `library/audit.py`

### Access and messaging

- [Authentication and access](https://github.com/vergara-ben/ayla-library-system/blob/main/library/auth_utils.py): `library/auth_utils.py`
- [Request middleware](https://github.com/vergara-ben/ayla-library-system/blob/main/library/middleware.py): `library/middleware.py`
- [Open-status controls](https://github.com/vergara-ben/ayla-library-system/blob/main/library/openstatus.py): `library/openstatus.py`
- [Permission modules](https://github.com/vergara-ben/ayla-library-system/blob/main/library/modules.py): `library/modules.py`

### Other components

- **Patron**
- **Staff / Admin**

## Connections

- Patron → Application routes: uses
- Staff / Admin → Application routes: uses
- Application routes → Portal views: routes to (evidence: `library/urls.py`)
- Application routes → Service desk: routes to (evidence: `library/urls.py`)
- Application routes → Library chat: routes to (evidence: `library/urls.py`)
- Portal views → Library records: reads/writes (evidence: `library/views.py`)
- Portal views → Service desk: delegates to (evidence: `library/views.py`)
- Portal views → Authentication and access: uses (evidence: `library/views.py`)
- Portal views → Borrowing eligibility: uses (evidence: `library/views.py`)
- Portal views → Email notifications: uses (evidence: `library/views.py`)
- Portal views → Reports and exports: uses (evidence: `library/views.py`)
- Portal views → Library analytics: uses (evidence: `library/views.py`)
- Portal views → Activity audit: uses (evidence: `library/views.py`)
- Portal views → Floor-plan PDF: uses (evidence: `library/views.py`)
- Portal views → Shelf routing: uses (evidence: `library/views.py`)
- Portal views → Library records: uses (evidence: `library/views.py`)
- Service desk → Library records: reads/writes (evidence: `library/desk.py`)
- Service desk → Portal views: uses catalogue helpers (evidence: `library/desk.py`)
- Service desk → Authentication and access: uses (evidence: `library/desk.py`)
- Service desk → Activity audit: uses (evidence: `library/desk.py`)
- Service desk → Email notifications: uses (evidence: `library/desk.py`)
- Library records → Card numbers: generates cards (evidence: `library/models.py`)
- Library records → Permission modules: uses (evidence: `library/models.py`)
- Library records → Library analytics: queried by (evidence: `library/analytics.py`)
- Library analytics → Reports and exports: uses (evidence: `library/analytics.py`)
- Reports and exports → Library records: queries (evidence: `library/reports.py`)
- Floor-plan undo → Library records: reads/writes (evidence: `library/floorplan_undo.py`)
- Floor-plan undo → Authentication and access: uses (evidence: `library/floorplan_undo.py`)
- Floor-plan undo → Activity audit: uses (evidence: `library/floorplan_undo.py`)
- Floor-plan PDF → Reports and exports: uses (evidence: `library/floorplan_pdf.py`)
- Authentication and access → Library records: checks users (evidence: `library/auth_utils.py`)
- Authentication and access → Activity audit: uses (evidence: `library/auth_utils.py`)
- Authentication and access → Permission modules: checks permissions (evidence: `library/auth_utils.py`)
- Request middleware → Library records: queries (evidence: `library/middleware.py`)
- Request middleware → Service desk: uses (evidence: `library/middleware.py`)
- Open-status controls → Library records: reads/writes (evidence: `library/openstatus.py`)
- Open-status controls → Authentication and access: uses (evidence: `library/openstatus.py`)
- Open-status controls → Activity audit: uses (evidence: `library/openstatus.py`)
