# fauzan1892/perpus-ci3 architecture

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

- Interactive diagram: https://gitdiagram.com/fauzan1892/perpus-ci3
- Repository: https://github.com/fauzan1892/perpus-ci3

## Overview

This is a CodeIgniter 3 library-management web application for library staff and members. Users sign in, then manage members and the book catalog or follow the loan workflow: select books, record a loan and due date, process returns, and calculate late fees. The README also documents catalog uploads, search/sorting, loan history, soft deletion, and security controls. The framework handles request routing and controller dispatch; the sampled files show dashboard and catalog controllers rendering views, but several domain implementations were not sampled, so their links rely on README statements.

Main entry points: [`application/controllers/Transaksi.php`](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Transaksi.php) (Loan transactions), [`application/models/M_Admin.php`](https://github.com/fauzan1892/perpus-ci3/blob/master/application/models/M_Admin.php) (Admin data model), [`application/controllers/Data.php`](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Data.php) (Book catalog), [`application/controllers/Login.php`](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Login.php) (Login)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Web runtime"]
  node_front["Front controller<br/>[index.php]"]
  node_framework["CI bootstrap<br/>[CodeIgniter.php]"]
  node_router["URI routing<br/>[Router.php]"]
  node_dashboard["Dashboard<br/>[Dashboard.php]"]
end

subgraph group_identity["Access and users"]
  node_login["Login<br/>[Login.php]"]
  node_session["Session state<br/>[Session.php]"]
  node_useradmin["User management<br/>[User.php]"]
  node_userpages["User views<br/>[user_view.php]"]
end

subgraph group_catalog["Catalog management"]
  node_catalog["Book catalog<br/>[Data.php]"]
  node_catalogpages["Book views<br/>[buku_view.php]"]
  node_taxonomy["Category and shelves<br/>[Data.php]"]
  node_upload["Catalog uploads<br/>[upload_helper.php]"]
end

subgraph group_circulation["Loan circulation"]
  node_loans["Loan transactions<br/>[Transaksi.php]"]
  node_loanpages["Loan and return views<br/>[kembali.php]"]
  node_fees["Late fees<br/>[denda_view.php]"]
  node_loanrules["Date and fee rules<br/>[perpus_helper.php]"]
end

subgraph group_persistence["Data services"]
  node_adminmodel["Admin data model<br/>[M_Admin.php]"]
  node_loginmodel["Login model<br/>[M_login.php]"]
  node_database[("Configured database<br/>[database.php]")]
  node_querybuilder["Query builder"]
end

node_visitor(("Staff or member"))

node_visitor -->|"sends request"| node_front
node_front -->|"starts runtime"| node_framework
node_framework -->|"initializes routing"| node_router
node_router -.->|"dispatches request"| node_dashboard
node_visitor -->|"signs in"| node_login
node_login -.->|"maintains access"| node_session
node_login -.->|"checks credentials"| node_loginmodel
node_visitor -->|"manages members"| node_useradmin
node_useradmin -.->|"renders pages"| node_userpages
node_visitor -->|"manages books"| node_catalog
node_catalog -->|"renders pages"| node_catalogpages
node_visitor -->|"manages categories"| node_taxonomy
node_catalog -.->|"uploads files"| node_upload
node_visitor -->|"borrows or returns"| node_loans
node_loans -.->|"renders pages"| node_loanpages
node_loans -->|"calculates dates"| node_loanrules
node_loanpages -->|"calculates late fees"| node_loanrules
node_loans -.->|"manages fee settings"| node_fees
node_dashboard -.->|"reads summaries"| node_adminmodel
node_catalog -.->|"uses data model"| node_adminmodel
node_useradmin -.->|"uses data model"| node_adminmodel
node_loans -.->|"uses data model"| node_adminmodel
node_adminmodel -.->|"queries through"| node_querybuilder
node_querybuilder -.->|"accesses store"| node_database

click node_front "https://github.com/fauzan1892/perpus-ci3/blob/master/index.php"
click node_framework "https://github.com/fauzan1892/perpus-ci3/blob/master/system/core/CodeIgniter.php"
click node_router "https://github.com/fauzan1892/perpus-ci3/blob/master/system/core/Router.php"
click node_dashboard "https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Dashboard.php"
click node_login "https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Login.php"
click node_session "https://github.com/fauzan1892/perpus-ci3/blob/master/system/libraries/Session/Session.php"
click node_useradmin "https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/User.php"
click node_userpages "https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/user/user_view.php"
click node_catalog "https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Data.php"
click node_catalogpages "https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/buku/buku_view.php"
click node_taxonomy "https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Data.php"
click node_upload "https://github.com/fauzan1892/perpus-ci3/blob/master/application/helpers/upload_helper.php"
click node_loans "https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Transaksi.php"
click node_loanpages "https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/pinjam/kembali.php"
click node_fees "https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/denda/denda_view.php"
click node_loanrules "https://github.com/fauzan1892/perpus-ci3/blob/master/application/helpers/perpus_helper.php"
click node_adminmodel "https://github.com/fauzan1892/perpus-ci3/blob/master/application/models/M_Admin.php"
click node_loginmodel "https://github.com/fauzan1892/perpus-ci3/blob/master/application/models/M_login.php"
click node_database "https://github.com/fauzan1892/perpus-ci3/blob/master/application/config/database.php"
click node_querybuilder "https://github.com/fauzan1892/perpus-ci3/blob/master/system/database/DB_query_builder.php"

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_front,node_framework,node_router,node_dashboard toneBlue
class node_login,node_session,node_useradmin,node_userpages toneAmber
class node_catalog,node_catalogpages,node_taxonomy,node_upload toneMint
class node_loans,node_loanpages,node_fees,node_loanrules toneRose
class node_adminmodel,node_loginmodel,node_database,node_querybuilder,node_visitor toneIndigo
```

## Components

### Web runtime

- [Front controller](https://github.com/fauzan1892/perpus-ci3/blob/master/index.php): `index.php`
- [CI bootstrap](https://github.com/fauzan1892/perpus-ci3/blob/master/system/core/CodeIgniter.php): `system/core/CodeIgniter.php`
- [URI routing](https://github.com/fauzan1892/perpus-ci3/blob/master/system/core/Router.php): `system/core/Router.php`
- [Dashboard](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Dashboard.php): `application/controllers/Dashboard.php`

### Access and users

- [Login](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Login.php): `application/controllers/Login.php`
- [Session state](https://github.com/fauzan1892/perpus-ci3/blob/master/system/libraries/Session/Session.php): `system/libraries/Session/Session.php`
- [User management](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/User.php): `application/controllers/User.php`
- [User views](https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/user/user_view.php): `application/views/user/user_view.php`

### Catalog management

- [Book catalog](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Data.php): `application/controllers/Data.php`
- [Book views](https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/buku/buku_view.php): `application/views/buku/buku_view.php`
- [Category and shelves](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Data.php): `application/controllers/Data.php`
- [Catalog uploads](https://github.com/fauzan1892/perpus-ci3/blob/master/application/helpers/upload_helper.php): `application/helpers/upload_helper.php`

### Loan circulation

- [Loan transactions](https://github.com/fauzan1892/perpus-ci3/blob/master/application/controllers/Transaksi.php): `application/controllers/Transaksi.php`
- [Loan and return views](https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/pinjam/kembali.php): `application/views/pinjam/kembali.php`
- [Late fees](https://github.com/fauzan1892/perpus-ci3/blob/master/application/views/denda/denda_view.php): `application/views/denda/denda_view.php`
- [Date and fee rules](https://github.com/fauzan1892/perpus-ci3/blob/master/application/helpers/perpus_helper.php): `application/helpers/perpus_helper.php`

### Data services

- [Admin data model](https://github.com/fauzan1892/perpus-ci3/blob/master/application/models/M_Admin.php): `application/models/M_Admin.php`
- [Login model](https://github.com/fauzan1892/perpus-ci3/blob/master/application/models/M_login.php): `application/models/M_login.php`
- [Configured database](https://github.com/fauzan1892/perpus-ci3/blob/master/application/config/database.php): `application/config/database.php`
- [Query builder](https://github.com/fauzan1892/perpus-ci3/blob/master/system/database/DB_query_builder.php): `system/database/DB_query_builder.php`

### Other components

- **Staff or member**

## Connections

- Staff or member → Front controller: sends request (evidence: `README.md`)
- Front controller → CI bootstrap: starts runtime (evidence: `index.php`)
- CI bootstrap → URI routing: initializes routing (evidence: `system/core/CodeIgniter.php`)
- URI routing → Dashboard: dispatches request
- Staff or member → Login: signs in (evidence: `README.md`)
- Login → Session state: maintains access
- Login → Login model: checks credentials
- Staff or member → User management: manages members (evidence: `README.md`)
- User management → User views: renders pages
- Staff or member → Book catalog: manages books (evidence: `README.md`)
- Book catalog → Book views: renders pages (evidence: `application/controllers/Data.php`)
- Staff or member → Category and shelves: manages categories (evidence: `README.md`)
- Book catalog → Catalog uploads: uploads files
- Staff or member → Loan transactions: borrows or returns (evidence: `README.md`)
- Loan transactions → Loan and return views: renders pages (evidence: `application/views/pinjam/kembali.php`)
- Loan transactions → Date and fee rules: calculates dates (evidence: `application/controllers/Transaksi.php`)
- Loan and return views → Date and fee rules: calculates late fees (evidence: `application/views/pinjam/kembali.php`)
- Loan transactions → Late fees: manages fee settings
- Dashboard → Admin data model: reads summaries
- Book catalog → Admin data model: uses data model
- User management → Admin data model: uses data model
- Loan transactions → Admin data model: uses data model
- Admin data model → Query builder: queries through
- Query builder → Configured database: accesses store
