# rickymartinginting/webgisci4 architecture

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

## Overview

This is a CodeIgniter 4 WebGIS for browsing school locations and managing school records. The main visitor flow is request routing to school listing/filter, detail, or table pages, with school data read through DataModel; authenticated users can register or log in, then access the dashboard and school-management routes. README identifies Leaflet as the map library, but the supplied excerpts do not show map initialization or its data wiring, so that integration is shown as unverified. Other unsampled management views are retained as subsystem nodes based on the tree.

Main entry points: [`app/Controllers/Home.php`](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Home.php) (Public browsing), [`app/Config/Routes.php`](https://github.com/rickymartinginting/webgisci4/blob/master/app/Config/Routes.php) (Application routes), [`app/Controllers/Auth.php`](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Auth.php) (Auth controller), [`app/Controllers/Form.php`](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Form.php) (School management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Request routing"]
  node_front["HTTP front controller<br/>[index.php]"]
  node_routes["Application routes<br/>[Routes.php]"]
end

subgraph group_public["School discovery"]
  node_home["Public browsing<br/>[Home.php]"]
  node_school_model[("School records<br/>[DataModel.php]")]
  node_school_map["School map UI<br/>[v_home.php]"]
  node_school_detail["School details<br/>[v_detail.php]"]
  node_school_table["School table<br/>[v_table.php]"]
  node_leaflet["Leaflet mapping<br/>[leaflet.js]"]
end

subgraph group_admin["Administration"]
  node_admin_dash["Admin dashboard<br/>[Dashboard.php]"]
  node_school_forms["School management<br/>[Form.php]"]
  node_school_create["Create school view"]
  node_school_update["Update school view"]
  node_school_admin_views["Admin data views<br/>[v_datasekolah.php]"]
end

subgraph group_identity["Authentication"]
  node_auth["Auth controller<br/>[Auth.php]"]
  node_user_model[("User records<br/>[UserModel.php]")]
  node_login_view["Login form<br/>[v_login.php]"]
  node_register_view["Registration form<br/>[v_register.php]"]
  node_login_filter["Login guard<br/>[CekLogin.php]"]
end

subgraph group_presentation["Web interface"]
  node_base_controller["Controller base<br/>[BaseController.php]"]
  node_home_view["Home presentation<br/>[v_home.php]"]
  node_dashboard_view["Dashboard presentation<br/>[v_dashboard.php]"]
  node_site_shell["Shared site shell<br/>[BaseView.php]"]
end

node_visitor(("Visitor"))
node_admin_user(("Administrator"))

node_visitor -->|"requests pages"| node_front
node_admin_user -->|"requests pages"| node_front
node_front -->|"boots application"| node_routes
node_routes -->|"routes public pages"| node_home
node_routes -->|"routes auth requests"| node_auth
node_routes -->|"routes dashboard"| node_admin_dash
node_routes -->|"routes forms"| node_school_forms
node_routes -->|"guards admin routes"| node_login_filter
node_home -->|"reads school data"| node_school_model
node_home -->|"renders listing"| node_school_map
node_home -->|"renders detail"| node_school_detail
node_home -->|"renders table"| node_school_table
node_admin_dash -->|"reads counts and schools"| node_school_model
node_admin_dash -->|"renders dashboard"| node_dashboard_view
node_school_forms -->|"manages school data"| node_school_model
node_school_forms -.->|"renders create form"| node_school_create
node_school_forms -.->|"renders update form"| node_school_update
node_school_forms -.->|"renders data views"| node_school_admin_views
node_auth -->|"reads and saves users"| node_user_model
node_auth -->|"renders login"| node_login_view
node_auth -->|"renders registration"| node_register_view
node_login_filter -->|"redirects unauthenticated"| node_auth
node_home -->|"extends controller"| node_base_controller
node_auth -->|"extends controller"| node_base_controller
node_admin_dash -->|"extends controller"| node_base_controller
node_home_view -.->|"may use map library"| node_leaflet
node_home -.->|"uses shared layout"| node_site_shell

click node_front "https://github.com/rickymartinginting/webgisci4/blob/master/public/index.php"
click node_routes "https://github.com/rickymartinginting/webgisci4/blob/master/app/Config/Routes.php"
click node_home "https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Home.php"
click node_school_model "https://github.com/rickymartinginting/webgisci4/blob/master/app/Models/DataModel.php"
click node_school_map "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_home.php"
click node_school_detail "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_detail.php"
click node_school_table "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_table.php"
click node_admin_dash "https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Dashboard.php"
click node_school_forms "https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Form.php"
click node_school_create "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_createsekolah.php"
click node_school_update "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_updatesekolah.php"
click node_school_admin_views "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_datasekolah.php"
click node_auth "https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Auth.php"
click node_user_model "https://github.com/rickymartinginting/webgisci4/blob/master/app/Models/UserModel.php"
click node_login_view "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/auth/v_login.php"
click node_register_view "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/auth/v_register.php"
click node_login_filter "https://github.com/rickymartinginting/webgisci4/blob/master/app/Filters/CekLogin.php"
click node_base_controller "https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/BaseController.php"
click node_home_view "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_home.php"
click node_dashboard_view "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_dashboard.php"
click node_site_shell "https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/template/BaseView.php"
click node_leaflet "https://github.com/rickymartinginting/webgisci4/blob/master/public/js/leaflet/leaflet.js"

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_routes toneBlue
class node_home,node_school_model,node_school_map,node_school_detail,node_school_table,node_leaflet toneAmber
class node_admin_dash,node_school_forms,node_school_create,node_school_update,node_school_admin_views toneMint
class node_auth,node_user_model,node_login_view,node_register_view,node_login_filter toneRose
class node_base_controller,node_home_view,node_dashboard_view,node_site_shell,node_visitor,node_admin_user toneIndigo
```

## Components

### Request routing

- [HTTP front controller](https://github.com/rickymartinginting/webgisci4/blob/master/public/index.php): `public/index.php`
- [Application routes](https://github.com/rickymartinginting/webgisci4/blob/master/app/Config/Routes.php): `app/Config/Routes.php`

### School discovery

- [Public browsing](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Home.php): `app/Controllers/Home.php`
- [School records](https://github.com/rickymartinginting/webgisci4/blob/master/app/Models/DataModel.php): `app/Models/DataModel.php`
- [School map UI](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_home.php): `app/Views/v_home.php`
- [School details](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_detail.php): `app/Views/v_detail.php`
- [School table](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_table.php): `app/Views/v_table.php`
- [Leaflet mapping](https://github.com/rickymartinginting/webgisci4/blob/master/public/js/leaflet/leaflet.js): `public/js/leaflet/leaflet.js`

### Administration

- [Admin dashboard](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Dashboard.php): `app/Controllers/Dashboard.php`
- [School management](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Form.php): `app/Controllers/Form.php`
- [Create school view](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_createsekolah.php): `app/Views/v_createsekolah.php`
- [Update school view](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_updatesekolah.php): `app/Views/v_updatesekolah.php`
- [Admin data views](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_datasekolah.php): `app/Views/v_datasekolah.php`

### Authentication

- [Auth controller](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/Auth.php): `app/Controllers/Auth.php`
- [User records](https://github.com/rickymartinginting/webgisci4/blob/master/app/Models/UserModel.php): `app/Models/UserModel.php`
- [Login form](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/auth/v_login.php): `app/Views/auth/v_login.php`
- [Registration form](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/auth/v_register.php): `app/Views/auth/v_register.php`
- [Login guard](https://github.com/rickymartinginting/webgisci4/blob/master/app/Filters/CekLogin.php): `app/Filters/CekLogin.php`

### Web interface

- [Controller base](https://github.com/rickymartinginting/webgisci4/blob/master/app/Controllers/BaseController.php): `app/Controllers/BaseController.php`
- [Home presentation](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_home.php): `app/Views/v_home.php`
- [Dashboard presentation](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/v_dashboard.php): `app/Views/v_dashboard.php`
- [Shared site shell](https://github.com/rickymartinginting/webgisci4/blob/master/app/Views/template/BaseView.php): `app/Views/template/BaseView.php`

### Other components

- **Visitor**
- **Administrator**

## Connections

- Visitor → HTTP front controller: requests pages (evidence: `public/index.php`)
- Administrator → HTTP front controller: requests pages (evidence: `public/index.php`)
- HTTP front controller → Application routes: boots application (evidence: `public/index.php`)
- Application routes → Public browsing: routes public pages (evidence: `app/Config/Routes.php`)
- Application routes → Auth controller: routes auth requests (evidence: `app/Config/Routes.php`)
- Application routes → Admin dashboard: routes dashboard (evidence: `app/Config/Routes.php`)
- Application routes → School management: routes forms (evidence: `app/Config/Routes.php`)
- Application routes → Login guard: guards admin routes (evidence: `app/Config/Routes.php`)
- Public browsing → School records: reads school data (evidence: `app/Controllers/Home.php`)
- Public browsing → School map UI: renders listing (evidence: `app/Controllers/Home.php`)
- Public browsing → School details: renders detail (evidence: `app/Controllers/Home.php`)
- Public browsing → School table: renders table (evidence: `app/Controllers/Home.php`)
- Admin dashboard → School records: reads counts and schools (evidence: `app/Controllers/Dashboard.php`)
- Admin dashboard → Dashboard presentation: renders dashboard (evidence: `app/Controllers/Dashboard.php`)
- School management → School records: manages school data (evidence: `app/Controllers/Form.php`)
- School management → Create school view: renders create form
- School management → Update school view: renders update form
- School management → Admin data views: renders data views
- Auth controller → User records: reads and saves users (evidence: `app/Controllers/Auth.php`)
- Auth controller → Login form: renders login (evidence: `app/Controllers/Auth.php`)
- Auth controller → Registration form: renders registration (evidence: `app/Controllers/Auth.php`)
- Login guard → Auth controller: redirects unauthenticated (evidence: `app/Filters/CekLogin.php`)
- Public browsing → Controller base: extends controller (evidence: `app/Controllers/Home.php`)
- Auth controller → Controller base: extends controller (evidence: `app/Controllers/Auth.php`)
- Admin dashboard → Controller base: extends controller (evidence: `app/Controllers/Dashboard.php`)
- Home presentation → Leaflet mapping: may use map library
- Public browsing → Shared site shell: uses shared layout
