# novalalgfr/manajemen-keuangan architecture

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

- Interactive diagram: https://gitdiagram.com/novalalgfr/manajemen-keuangan
- Repository: https://github.com/novalalgfr/manajemen-keuangan

## Overview

This is a Laravel/Inertia school-foundation accounting application. Users sign in, then work with accounting pages and administer users, fiscal periods, and organization settings; sampled controllers return Inertia page data and persist changes through Eloquent models. The tree also documents journal, ledger, and account-code interfaces, but their server-side wiring is not represented in the sampled source. Edges therefore show only supported rendering, authentication, and model interactions.

Main entry points: [`routes/web.php`](https://github.com/novalalgfr/manajemen-keuangan/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/OrganizationController.php`](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/OrganizationController.php) (Organization profile), [`app/Http/Controllers/UserController.php`](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/UserController.php) (User management), [`app/Http/Controllers/FiscalPeriodController.php`](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/FiscalPeriodController.php) (Fiscal periods)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Request and UI"]
  node_http["Laravel request<br/>[index.php]"]
  node_routes["Web routes<br/>[web.php]"]
  node_inertia["Inertia bootstrap<br/>[app.tsx]"]
  node_layout["App layout<br/>[app-layout.tsx]"]
end

subgraph group_accounting["Accounting workspace"]
  node_dashboard["Home dashboard<br/>[beranda.tsx]"]
  node_journals["General journals<br/>[jurnal-umum.tsx]"]
  node_journal_new["New journal"]
  node_ledger["General ledger<br/>[buku-besar.tsx]"]
  node_accounts["Account codes<br/>[kode-akun.tsx]"]
  node_account_new["New account code"]
end

subgraph group_admin["Administration"]
  node_period_controller["Fiscal periods"]
  node_period_model["Fiscal period model<br/>[FiscalPeriod.php]"]
  node_period_page["Period closing"]
  node_org_controller["Organization profile"]
  node_org_model["Organization settings"]
  node_org_page["Foundation profile<br/>[profil-yayasan.tsx]"]
  node_school_model["School unit model<br/>[SchoolUnit.php]"]
end

subgraph group_identity["Identity and access"]
  node_user_controller["User management<br/>[UserController.php]"]
  node_user_model["User model<br/>[User.php]"]
  node_users_page["Manage users<br/>[manajemen-user.tsx]"]
  node_session_controller["Authentication"]
  node_login_page["Login<br/>[login.tsx]"]
  node_access_middleware["Active-user guard"]
end

node_user(("User"))

node_user -->|"sends requests"| node_http
node_http -->|"dispatches"| node_routes
node_routes -->|"routes auth"| node_session_controller
node_routes -->|"routes periods"| node_period_controller
node_routes -->|"routes profile"| node_org_controller
node_routes -->|"routes users"| node_user_controller
node_session_controller -->|"authenticates"| node_user_model
node_session_controller -->|"renders"| node_login_page
node_period_controller -->|"reads and writes"| node_period_model
node_period_controller -->|"renders data"| node_period_page
node_org_controller -->|"reads and updates"| node_org_model
node_org_controller -->|"reads units"| node_school_model
node_org_controller -->|"renders data"| node_org_page
node_user_controller -->|"manages users"| node_user_model
node_user_controller -->|"reads units"| node_school_model
node_user_controller -->|"renders data"| node_users_page
node_routes -->|"guards web"| node_access_middleware
node_inertia -->|"starts UI"| node_layout
node_layout -->|"frames page"| node_dashboard

click node_http "https://github.com/novalalgfr/manajemen-keuangan/blob/main/public/index.php"
click node_routes "https://github.com/novalalgfr/manajemen-keuangan/blob/main/routes/web.php"
click node_inertia "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/app.tsx"
click node_layout "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/layout/app-layout.tsx"
click node_dashboard "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/beranda.tsx"
click node_journals "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/jurnal-umum.tsx"
click node_journal_new "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/tambah-jurnal-umum.tsx"
click node_ledger "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/buku-besar.tsx"
click node_accounts "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/kode-akun.tsx"
click node_account_new "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/tambah-kode-akun.tsx"
click node_period_controller "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/FiscalPeriodController.php"
click node_period_model "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/FiscalPeriod.php"
click node_period_page "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/periode-closing.tsx"
click node_org_controller "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/OrganizationController.php"
click node_org_model "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/OrganizationSettings.php"
click node_org_page "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/profil-yayasan.tsx"
click node_user_controller "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/UserController.php"
click node_user_model "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/User.php"
click node_users_page "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/manajemen-user.tsx"
click node_session_controller "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_login_page "https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/login.tsx"
click node_access_middleware "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Middleware/EnsureUserIsActive.php"
click node_school_model "https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/SchoolUnit.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_http,node_routes,node_inertia,node_layout,node_user toneBlue
class node_dashboard,node_journals,node_journal_new,node_ledger,node_accounts,node_account_new toneAmber
class node_period_controller,node_period_model,node_period_page,node_org_controller,node_org_model,node_org_page,node_school_model toneMint
class node_user_controller,node_user_model,node_users_page,node_session_controller,node_login_page,node_access_middleware toneRose
```

## Components

### Request and UI

- [Laravel request](https://github.com/novalalgfr/manajemen-keuangan/blob/main/public/index.php): `public/index.php`
- [Web routes](https://github.com/novalalgfr/manajemen-keuangan/blob/main/routes/web.php): `routes/web.php`
- [Inertia bootstrap](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/app.tsx): `resources/js/app.tsx`
- [App layout](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/layout/app-layout.tsx): `resources/js/layout/app-layout.tsx`

### Accounting workspace

- [Home dashboard](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/beranda.tsx): `resources/js/pages/beranda.tsx`
- [General journals](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/jurnal-umum.tsx): `resources/js/pages/jurnal-umum.tsx`
- [New journal](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/tambah-jurnal-umum.tsx): `resources/js/pages/tambah-jurnal-umum.tsx`
- [General ledger](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/buku-besar.tsx): `resources/js/pages/buku-besar.tsx`
- [Account codes](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/kode-akun.tsx): `resources/js/pages/kode-akun.tsx`
- [New account code](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/tambah-kode-akun.tsx): `resources/js/pages/tambah-kode-akun.tsx`

### Administration

- [Fiscal periods](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/FiscalPeriodController.php): `app/Http/Controllers/FiscalPeriodController.php`
- [Fiscal period model](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/FiscalPeriod.php): `app/Models/FiscalPeriod.php`
- [Period closing](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/periode-closing.tsx): `resources/js/pages/periode-closing.tsx`
- [Organization profile](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/OrganizationController.php): `app/Http/Controllers/OrganizationController.php`
- [Organization settings](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/OrganizationSettings.php): `app/Models/OrganizationSettings.php`
- [Foundation profile](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/profil-yayasan.tsx): `resources/js/pages/profil-yayasan.tsx`
- [School unit model](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/SchoolUnit.php): `app/Models/SchoolUnit.php`

### Identity and access

- [User management](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/UserController.php): `app/Http/Controllers/UserController.php`
- [User model](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Models/User.php): `app/Models/User.php`
- [Manage users](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/manajemen-user.tsx): `resources/js/pages/manajemen-user.tsx`
- [Authentication](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Login](https://github.com/novalalgfr/manajemen-keuangan/blob/main/resources/js/pages/login.tsx): `resources/js/pages/login.tsx`
- [Active-user guard](https://github.com/novalalgfr/manajemen-keuangan/blob/main/app/Http/Middleware/EnsureUserIsActive.php): `app/Http/Middleware/EnsureUserIsActive.php`

### Other components

- **User**

## Connections

- User → Laravel request: sends requests
- Laravel request → Web routes: dispatches
- Web routes → Authentication: routes auth
- Web routes → Fiscal periods: routes periods
- Web routes → Organization profile: routes profile
- Web routes → User management: routes users
- Authentication → User model: authenticates
- Authentication → Login: renders
- Fiscal periods → Fiscal period model: reads and writes
- Fiscal periods → Period closing: renders data
- Organization profile → Organization settings: reads and updates
- Organization profile → School unit model: reads units
- Organization profile → Foundation profile: renders data
- User management → User model: manages users
- User management → School unit model: reads units
- User management → Manage users: renders data
- Web routes → Active-user guard: guards web
- Inertia bootstrap → App layout: starts UI
- App layout → Home dashboard: frames page
