# nurulislam17/fin_api architecture

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

- Interactive diagram: https://gitdiagram.com/nurulislam17/fin_api
- Repository: https://github.com/nurulislam17/fin_api

## Overview

This Laravel application exposes a banking and branch-management API for authentication, customers, accounts, staff, configuration, and activity logs. API routes dispatch requests to controllers, which delegate domain operations to services; user-management requests can coordinate user and office-profile changes. Services and repositories provide an internal persistence layer over Eloquent models. The README describes Laravel generally, not this application's domain capabilities. Relationships for unsampled modules are included only where the route index or source index supports them; their detailed behavior was not inspected.

Main entry points: [`routes/api.php`](https://github.com/nurulislam17/fin_api/blob/master/routes/api.php) (API routes), [`app/Models`](https://github.com/nurulislam17/fin_api/tree/master/app/Models) (Domain models), [`app/Services/ActivityLogService.php`](https://github.com/nurulislam17/fin_api/blob/master/app/Services/ActivityLogService.php) (Activity log service), [`config/database.php`](https://github.com/nurulislam17/fin_api/blob/master/config/database.php) (Application database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and identity"]
  node_api_routes["API routes<br/>[api.php]"]
  node_auth_controller["Authentication<br/>[AuthController.php]"]
  node_auth_service["Auth service<br/>[AuthService.php]"]
end

subgraph group_operations["Banking operations"]
  node_customer_controller["Customer API"]
  node_customer_service["Customer service"]
  node_customer_repository["Customer repository"]
  node_account_controller["Account API"]
  node_account_service["Account service<br/>[AccountService.php]"]
  node_branch_controller["Branch API"]
  node_branch_service["Branch service<br/>[BranchService.php]"]
end

subgraph group_administration["User administration"]
  node_configuration_controller["Configuration API"]
  node_permission_service["Permission service"]
  node_role_service["Role service<br/>[RoleService.php]"]
  node_user_controller["User API<br/>[UserController.php]"]
  node_user_service["User service<br/>[UserService.php]"]
  node_office_user_service["Office profile service"]
  node_user_repository["User repository<br/>[UserRepository.php]"]
  node_office_user_repository["Office profile repository"]
end

subgraph group_audit["Audit and persistence"]
  node_activity_controller["Activity log API"]
  node_activity_service["Activity log service"]
  node_activity_observer["Activity observer"]
  node_activity_repository["Activity repository"]
  node_models["Domain models"]
  node_database[("Application database<br/>[database.php]")]
end

node_api_client(("API client"))

node_api_client -->|"sends requests"| node_api_routes
node_api_routes -->|"dispatches to"| node_auth_controller
node_api_routes -->|"dispatches to"| node_customer_controller
node_api_routes -->|"dispatches to"| node_account_controller
node_api_routes -->|"dispatches to"| node_branch_controller
node_api_routes -->|"dispatches to"| node_configuration_controller
node_api_routes -->|"dispatches to"| node_user_controller
node_api_routes -->|"dispatches to"| node_activity_controller
node_auth_controller -->|"delegates to"| node_auth_service
node_auth_service -->|"creates users"| node_models
node_customer_controller -->|"delegates to"| node_customer_service
node_customer_service -->|"queries via"| node_customer_repository
node_customer_repository -->|"queries customers"| node_models
node_account_controller -->|"delegates to"| node_account_service
node_branch_controller -->|"delegates to"| node_branch_service
node_configuration_controller -->|"delegates to"| node_permission_service
node_configuration_controller -->|"delegates to"| node_role_service
node_user_controller -->|"delegates to"| node_user_service
node_user_controller -->|"delegates to"| node_office_user_service
node_user_service -->|"queries via"| node_user_repository
node_office_user_service -->|"persists via"| node_office_user_repository
node_user_repository -->|"queries users"| node_models
node_office_user_repository -->|"uses profile model"| node_models
node_activity_controller -->|"delegates to"| node_activity_service
node_activity_service -->|"queries via"| node_activity_repository
node_activity_service -->|"creates log records"| node_models
node_activity_observer -->|"records changes"| node_activity_service
node_models -.->|"persists through ORM"| node_database
node_activity_repository -.->|"reads log data"| node_database
node_branch_service -.->|"uses persistence"| node_database
node_account_service -.->|"uses persistence"| node_database

click node_api_routes "https://github.com/nurulislam17/fin_api/blob/master/routes/api.php"
click node_auth_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/AuthController.php"
click node_auth_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/AuthService.php"
click node_customer_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/CustomerController.php"
click node_customer_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/CustomerService.php"
click node_customer_repository "https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/CustomerRepository.php"
click node_account_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/AccountController.php"
click node_account_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/AccountService.php"
click node_branch_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/BranchController.php"
click node_branch_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/BranchService.php"
click node_configuration_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/ConfigurationController.php"
click node_permission_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/PermissionService.php"
click node_role_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/RoleService.php"
click node_user_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/UserController.php"
click node_user_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/UserService.php"
click node_office_user_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/OfficeUserService.php"
click node_user_repository "https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/UserRepository.php"
click node_office_user_repository "https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/OfficeUserRepository.php"
click node_activity_controller "https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/ActivityLogController.php"
click node_activity_service "https://github.com/nurulislam17/fin_api/blob/master/app/Services/ActivityLogService.php"
click node_activity_observer "https://github.com/nurulislam17/fin_api/blob/master/app/Observers/ActivityObserver.php"
click node_activity_repository "https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/ActivityLogRepository.php"
click node_models "https://github.com/nurulislam17/fin_api/tree/master/app/Models"
click node_database "https://github.com/nurulislam17/fin_api/blob/master/config/database.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_api_routes,node_auth_controller,node_auth_service,node_api_client toneBlue
class node_customer_controller,node_customer_service,node_customer_repository,node_account_controller,node_account_service,node_branch_controller,node_branch_service toneAmber
class node_configuration_controller,node_permission_service,node_role_service,node_user_controller,node_user_service,node_office_user_service,node_user_repository,node_office_user_repository toneMint
class node_activity_controller,node_activity_service,node_activity_observer,node_activity_repository,node_models,node_database toneRose
```

## Components

### API and identity

- [API routes](https://github.com/nurulislam17/fin_api/blob/master/routes/api.php): `routes/api.php`
- [Authentication](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/AuthController.php): `app/Http/Controllers/AuthController.php`
- [Auth service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/AuthService.php): `app/Services/AuthService.php`

### Banking operations

- [Customer API](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/CustomerController.php): `app/Http/Controllers/CustomerController.php`
- [Customer service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/CustomerService.php): `app/Services/CustomerService.php`
- [Customer repository](https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/CustomerRepository.php): `app/Repositories/CustomerRepository.php`
- [Account API](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/AccountController.php): `app/Http/Controllers/AccountController.php`
- [Account service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/AccountService.php): `app/Services/AccountService.php`
- [Branch API](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/BranchController.php): `app/Http/Controllers/BranchController.php`
- [Branch service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/BranchService.php): `app/Services/BranchService.php`

### User administration

- [Configuration API](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/ConfigurationController.php): `app/Http/Controllers/ConfigurationController.php`
- [Permission service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/PermissionService.php): `app/Services/PermissionService.php`
- [Role service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/RoleService.php): `app/Services/RoleService.php`
- [User API](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/UserController.php): `app/Http/Controllers/UserController.php`
- [User service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/UserService.php): `app/Services/UserService.php`
- [Office profile service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/OfficeUserService.php): `app/Services/OfficeUserService.php`
- [User repository](https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/UserRepository.php): `app/Repositories/UserRepository.php`
- [Office profile repository](https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/OfficeUserRepository.php): `app/Repositories/OfficeUserRepository.php`

### Audit and persistence

- [Activity log API](https://github.com/nurulislam17/fin_api/blob/master/app/Http/Controllers/ActivityLogController.php): `app/Http/Controllers/ActivityLogController.php`
- [Activity log service](https://github.com/nurulislam17/fin_api/blob/master/app/Services/ActivityLogService.php): `app/Services/ActivityLogService.php`
- [Activity observer](https://github.com/nurulislam17/fin_api/blob/master/app/Observers/ActivityObserver.php): `app/Observers/ActivityObserver.php`
- [Activity repository](https://github.com/nurulislam17/fin_api/blob/master/app/Repositories/ActivityLogRepository.php): `app/Repositories/ActivityLogRepository.php`
- [Domain models](https://github.com/nurulislam17/fin_api/tree/master/app/Models): `app/Models`
- [Application database](https://github.com/nurulislam17/fin_api/blob/master/config/database.php): `config/database.php`

### Other components

- **API client**

## Connections

- API client → API routes: sends requests (evidence: `routes/api.php`)
- API routes → Authentication: dispatches to (evidence: `routes/api.php`)
- API routes → Customer API: dispatches to (evidence: `routes/api.php`)
- API routes → Account API: dispatches to (evidence: `routes/api.php`)
- API routes → Branch API: dispatches to (evidence: `routes/api.php`)
- API routes → Configuration API: dispatches to (evidence: `routes/api.php`)
- API routes → User API: dispatches to (evidence: `routes/api.php`)
- API routes → Activity log API: dispatches to (evidence: `routes/api.php`)
- Authentication → Auth service: delegates to (evidence: `app/Http/Controllers/AuthController.php`)
- Auth service → Domain models: creates users (evidence: `app/Services/AuthService.php`)
- Customer API → Customer service: delegates to (evidence: `app/Http/Controllers/CustomerController.php`)
- Customer service → Customer repository: queries via (evidence: `app/Services/CustomerService.php`)
- Customer repository → Domain models: queries customers (evidence: `app/Repositories/CustomerRepository.php`)
- Account API → Account service: delegates to (evidence: `app/Http/Controllers/AccountController.php`)
- Branch API → Branch service: delegates to (evidence: `app/Http/Controllers/BranchController.php`)
- Configuration API → Permission service: delegates to (evidence: `app/Http/Controllers/ConfigurationController.php`)
- Configuration API → Role service: delegates to (evidence: `app/Http/Controllers/ConfigurationController.php`)
- User API → User service: delegates to (evidence: `app/Http/Controllers/UserController.php`)
- User API → Office profile service: delegates to (evidence: `app/Http/Controllers/UserController.php`)
- User service → User repository: queries via (evidence: `app/Services/UserService.php`)
- Office profile service → Office profile repository: persists via (evidence: `app/Services/OfficeUserService.php`)
- User repository → Domain models: queries users (evidence: `app/Repositories/UserRepository.php`)
- Office profile repository → Domain models: uses profile model (evidence: `app/Repositories/OfficeUserRepository.php`)
- Activity log API → Activity log service: delegates to (evidence: `app/Http/Controllers/ActivityLogController.php`)
- Activity log service → Activity repository: queries via (evidence: `app/Services/ActivityLogService.php`)
- Activity log service → Domain models: creates log records (evidence: `app/Services/ActivityLogService.php`)
- Activity observer → Activity log service: records changes (evidence: `app/Observers/ActivityObserver.php`)
- Domain models → Application database: persists through ORM
- Activity repository → Application database: reads log data
- Branch service → Application database: uses persistence
- Account service → Application database: uses persistence
