# thalath/library-management-system-server-site architecture

> Architecture diagram of the GitHub repository thalath/library-management-system-server-site, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/thalath/library-management-system-server-site
- Repository: https://github.com/thalath/library-management-system-server-site

## Overview

This is a Flask user, authentication, email-OTP, and role-based-permission API. Its main workflow accepts registration or login requests, validates credentials and user data, creates users and tokens, and supports verification and account administration. Separate API branches manage users, roles, and permissions; permission middleware checks active-user status and grants. The graph reflects shown calls and source-index references; the README is empty, and some route wiring and unsampled implementation details remain unverified.

Main entry points: [`app/routes/auth_route.py`](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/auth_route.py) (Auth routes), [`app/routes/role_route.py`](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/role_route.py) (Role routes), [`app/routes/user_route.py`](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/user_route.py) (User routes), [`app/services/user_service.py`](https://github.com/thalath/library-management-system-server-site/blob/main/app/services/user_service.py) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API routes"]
  node_app["App setup<br/>[__init__.py]"]
  node_auth_route["Auth routes<br/>[auth_route.py]"]
  node_user_route["User routes<br/>[user_route.py]"]
  node_role_route["Role routes<br/>[role_route.py]"]
  node_permission_route["Permission routes"]
end

subgraph group_identity["Identity and verification"]
  node_user_service["User service<br/>[user_service.py]"]
  node_email_service["Email OTP service<br/>[email_service.py]"]
  node_otp_utils["OTP utilities<br/>[otp.py]"]
  node_auth_schema["Auth schemas<br/>[auth_schema.py]"]
  node_user_schema["User schemas<br/>[user_schema.py]"]
end

subgraph group_access["Access control"]
  node_permission_middleware["Permission guard"]
  node_role_service["Role service<br/>[role_service.py]"]
  node_permission_service["Permission service"]
  node_role_schema["Role schemas<br/>[role_schemas.py]"]
end

subgraph group_persistence["Persistence"]
  node_user_model["User model<br/>[user.py]"]
  node_role_model["Role model<br/>[role.py]"]
  node_permission_model["Permission model<br/>[permission.py]"]
  node_otp_model["Email OTP model<br/>[email_otp.py]"]
  node_token_model["Token blocklist<br/>[token_blocklist.py]"]
  node_associations["Role associations<br/>[associations.py]"]
  node_user_repo["User repository<br/>[user_repository.py]"]
  node_role_repo["Role repository<br/>[role_repository.py]"]
  node_permission_repo["Permission repository"]
  node_extensions["Flask extensions<br/>[extensions.py]"]
end

node_client(("API client"))
node_database[("SQL database")]

node_client -.->|"sends requests"| node_auth_route
node_client -.->|"sends requests"| node_user_route
node_client -.->|"sends requests"| node_role_route
node_client -.->|"sends requests"| node_permission_route
node_app -->|"registers"| node_auth_route
node_app -->|"registers"| node_user_route
node_app -->|"registers"| node_role_route
node_app -->|"registers"| node_permission_route
node_auth_route -->|"creates users"| node_user_service
node_auth_route -->|"looks up users"| node_user_repo
node_auth_route -->|"sends OTP"| node_email_service
node_auth_route -->|"generates OTP"| node_otp_utils
node_auth_route -->|"validates input"| node_auth_schema
node_auth_route -->|"queries users"| node_user_model
node_auth_route -->|"queries OTPs"| node_otp_model
node_auth_route -->|"blocks tokens"| node_token_model
node_user_route -->|"delegates to"| node_user_service
node_user_route -->|"validates input"| node_user_schema
node_user_route -->|"guards routes"| node_permission_middleware
node_role_route -->|"delegates to"| node_role_service
node_role_route -->|"guards routes"| node_permission_middleware
node_role_route -->|"validates input"| node_role_schema
node_role_route -->|"accesses roles"| node_role_repo
node_role_route -->|"accesses permissions"| node_permission_repo
node_permission_route -->|"delegates to"| node_permission_service
node_permission_route -->|"guards routes"| node_permission_middleware
node_user_service -->|"persists users"| node_user_repo
node_user_service -->|"looks up roles"| node_role_repo
node_user_service -->|"creates users"| node_user_model
node_email_service -->|"uses OTP"| node_otp_utils
node_email_service -->|"stores OTPs"| node_otp_model
node_role_service -->|"accesses roles"| node_role_repo
node_role_service -->|"accesses permissions"| node_permission_repo
node_permission_service -->|"manages permissions"| node_permission_model
node_permission_middleware -->|"checks grants"| node_user_model
node_user_repo -->|"queries users"| node_user_model
node_role_repo -->|"queries roles"| node_role_model
node_permission_repo -->|"queries permissions"| node_permission_model
node_user_model -->|"uses association"| node_associations
node_role_model -->|"uses association"| node_associations
node_permission_model -->|"uses association"| node_associations
node_extensions -.->|"configures ORM"| node_database

click node_app "https://github.com/thalath/library-management-system-server-site/blob/main/app/__init__.py"
click node_auth_route "https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/auth_route.py"
click node_user_route "https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/user_route.py"
click node_role_route "https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/role_route.py"
click node_permission_route "https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/permission_route.py"
click node_user_service "https://github.com/thalath/library-management-system-server-site/blob/main/app/services/user_service.py"
click node_email_service "https://github.com/thalath/library-management-system-server-site/blob/main/app/services/email_service.py"
click node_otp_utils "https://github.com/thalath/library-management-system-server-site/blob/main/app/utils/otp.py"
click node_auth_schema "https://github.com/thalath/library-management-system-server-site/blob/main/app/schemas/auth_schema.py"
click node_user_schema "https://github.com/thalath/library-management-system-server-site/blob/main/app/schemas/user_schema.py"
click node_permission_middleware "https://github.com/thalath/library-management-system-server-site/blob/main/middleware/permission_extended.py"
click node_role_service "https://github.com/thalath/library-management-system-server-site/blob/main/app/services/role_service.py"
click node_permission_service "https://github.com/thalath/library-management-system-server-site/blob/main/app/services/permission_service.py"
click node_role_schema "https://github.com/thalath/library-management-system-server-site/blob/main/app/schemas/role_schemas.py"
click node_user_model "https://github.com/thalath/library-management-system-server-site/blob/main/app/models/user.py"
click node_role_model "https://github.com/thalath/library-management-system-server-site/blob/main/app/models/role.py"
click node_permission_model "https://github.com/thalath/library-management-system-server-site/blob/main/app/models/permission.py"
click node_otp_model "https://github.com/thalath/library-management-system-server-site/blob/main/app/models/email_otp.py"
click node_token_model "https://github.com/thalath/library-management-system-server-site/blob/main/app/models/token_blocklist.py"
click node_associations "https://github.com/thalath/library-management-system-server-site/blob/main/app/models/associations.py"
click node_user_repo "https://github.com/thalath/library-management-system-server-site/blob/main/app/repositories/user_repository.py"
click node_role_repo "https://github.com/thalath/library-management-system-server-site/blob/main/app/repositories/role_repository.py"
click node_permission_repo "https://github.com/thalath/library-management-system-server-site/blob/main/app/repositories/permission_repository.py"
click node_extensions "https://github.com/thalath/library-management-system-server-site/blob/main/extensions.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_app,node_auth_route,node_user_route,node_role_route,node_permission_route,node_client toneBlue
class node_user_service,node_email_service,node_otp_utils,node_auth_schema,node_user_schema,node_database toneAmber
class node_permission_middleware,node_role_service,node_permission_service,node_role_schema toneMint
class node_user_model,node_role_model,node_permission_model,node_otp_model,node_token_model,node_associations,node_user_repo,node_role_repo,node_permission_repo,node_extensions toneRose
```

## Components

### API routes

- [App setup](https://github.com/thalath/library-management-system-server-site/blob/main/app/__init__.py): `app/__init__.py`
- [Auth routes](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/auth_route.py): `app/routes/auth_route.py`
- [User routes](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/user_route.py): `app/routes/user_route.py`
- [Role routes](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/role_route.py): `app/routes/role_route.py`
- [Permission routes](https://github.com/thalath/library-management-system-server-site/blob/main/app/routes/permission_route.py): `app/routes/permission_route.py`

### Identity and verification

- [User service](https://github.com/thalath/library-management-system-server-site/blob/main/app/services/user_service.py): `app/services/user_service.py`
- [Email OTP service](https://github.com/thalath/library-management-system-server-site/blob/main/app/services/email_service.py): `app/services/email_service.py`
- [OTP utilities](https://github.com/thalath/library-management-system-server-site/blob/main/app/utils/otp.py): `app/utils/otp.py`
- [Auth schemas](https://github.com/thalath/library-management-system-server-site/blob/main/app/schemas/auth_schema.py): `app/schemas/auth_schema.py`
- [User schemas](https://github.com/thalath/library-management-system-server-site/blob/main/app/schemas/user_schema.py): `app/schemas/user_schema.py`

### Access control

- [Permission guard](https://github.com/thalath/library-management-system-server-site/blob/main/middleware/permission_extended.py): `middleware/permission_extended.py`
- [Role service](https://github.com/thalath/library-management-system-server-site/blob/main/app/services/role_service.py): `app/services/role_service.py`
- [Permission service](https://github.com/thalath/library-management-system-server-site/blob/main/app/services/permission_service.py): `app/services/permission_service.py`
- [Role schemas](https://github.com/thalath/library-management-system-server-site/blob/main/app/schemas/role_schemas.py): `app/schemas/role_schemas.py`

### Persistence

- [User model](https://github.com/thalath/library-management-system-server-site/blob/main/app/models/user.py): `app/models/user.py`
- [Role model](https://github.com/thalath/library-management-system-server-site/blob/main/app/models/role.py): `app/models/role.py`
- [Permission model](https://github.com/thalath/library-management-system-server-site/blob/main/app/models/permission.py): `app/models/permission.py`
- [Email OTP model](https://github.com/thalath/library-management-system-server-site/blob/main/app/models/email_otp.py): `app/models/email_otp.py`
- [Token blocklist](https://github.com/thalath/library-management-system-server-site/blob/main/app/models/token_blocklist.py): `app/models/token_blocklist.py`
- [Role associations](https://github.com/thalath/library-management-system-server-site/blob/main/app/models/associations.py): `app/models/associations.py`
- [User repository](https://github.com/thalath/library-management-system-server-site/blob/main/app/repositories/user_repository.py): `app/repositories/user_repository.py`
- [Role repository](https://github.com/thalath/library-management-system-server-site/blob/main/app/repositories/role_repository.py): `app/repositories/role_repository.py`
- [Permission repository](https://github.com/thalath/library-management-system-server-site/blob/main/app/repositories/permission_repository.py): `app/repositories/permission_repository.py`
- [Flask extensions](https://github.com/thalath/library-management-system-server-site/blob/main/extensions.py): `extensions.py`

### Other components

- **API client**
- **SQL database**

## Connections

- API client → Auth routes: sends requests
- API client → User routes: sends requests
- API client → Role routes: sends requests
- API client → Permission routes: sends requests
- App setup → Auth routes: registers (evidence: `app/__init__.py`)
- App setup → User routes: registers (evidence: `app/__init__.py`)
- App setup → Role routes: registers (evidence: `app/__init__.py`)
- App setup → Permission routes: registers (evidence: `app/__init__.py`)
- Auth routes → User service: creates users (evidence: `app/routes/auth_route.py`)
- Auth routes → User repository: looks up users (evidence: `app/routes/auth_route.py`)
- Auth routes → Email OTP service: sends OTP (evidence: `app/routes/auth_route.py`)
- Auth routes → OTP utilities: generates OTP (evidence: `app/routes/auth_route.py`)
- Auth routes → Auth schemas: validates input (evidence: `app/routes/auth_route.py`)
- Auth routes → User model: queries users (evidence: `app/routes/auth_route.py`)
- Auth routes → Email OTP model: queries OTPs (evidence: `app/routes/auth_route.py`)
- Auth routes → Token blocklist: blocks tokens (evidence: `app/routes/auth_route.py`)
- User routes → User service: delegates to (evidence: `app/routes/user_route.py`)
- User routes → User schemas: validates input (evidence: `app/routes/user_route.py`)
- User routes → Permission guard: guards routes (evidence: `app/routes/user_route.py`)
- Role routes → Role service: delegates to (evidence: `app/routes/role_route.py`)
- Role routes → Permission guard: guards routes (evidence: `app/routes/role_route.py`)
- Role routes → Role schemas: validates input (evidence: `app/routes/role_route.py`)
- Role routes → Role repository: accesses roles (evidence: `app/routes/role_route.py`)
- Role routes → Permission repository: accesses permissions (evidence: `app/routes/role_route.py`)
- Permission routes → Permission service: delegates to (evidence: `app/routes/permission_route.py`)
- Permission routes → Permission guard: guards routes (evidence: `app/routes/permission_route.py`)
- User service → User repository: persists users (evidence: `app/services/user_service.py`)
- User service → Role repository: looks up roles (evidence: `app/services/user_service.py`)
- User service → User model: creates users (evidence: `app/services/user_service.py`)
- Email OTP service → OTP utilities: uses OTP (evidence: `app/services/email_service.py`)
- Email OTP service → Email OTP model: stores OTPs (evidence: `app/services/email_service.py`)
- Role service → Role repository: accesses roles (evidence: `app/services/role_service.py`)
- Role service → Permission repository: accesses permissions (evidence: `app/services/role_service.py`)
- Permission service → Permission model: manages permissions (evidence: `app/services/permission_service.py`)
- Permission guard → User model: checks grants (evidence: `middleware/permission_extended.py`)
- User repository → User model: queries users (evidence: `app/repositories/user_repository.py`)
- Role repository → Role model: queries roles (evidence: `app/repositories/role_repository.py`)
- Permission repository → Permission model: queries permissions (evidence: `app/repositories/permission_repository.py`)
- User model → Role associations: uses association (evidence: `app/models/user.py`)
- Role model → Role associations: uses association (evidence: `app/models/role.py`)
- Permission model → Role associations: uses association (evidence: `app/models/permission.py`)
- Flask extensions → SQL database: configures ORM
