# mkhalfanrd/new_eperencanaan architecture

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

- Interactive diagram: https://gitdiagram.com/mkhalfanrd/new_eperencanaan
- Repository: https://github.com/mkhalfanrd/new_eperencanaan

## Overview

ePerencanaan is a web application for planning and managing public infrastructure projects. Its main workflow is to create and evaluate a project, manage its packages, allocations, locations and supporting documents, then review and approve it. Separate capabilities cover master-data administration, Excel import, geographic lookup, user administration and activity logs. The sampled controllers show calls into backend services; frontend-to-API wiring and most service internals were not sampled, so those relationships are not inferred.

Main entry points: [`apps/frontend/src/app/(dashboard)/proyek/page.tsx`](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/proyek/page.tsx) (Project workspace), [`apps/backend/src/auth/auth.service.ts`](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/auth/auth.service.ts) (Authentication), [`apps/backend/src/proyek/proyek.controller.ts`](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/proyek/proyek.controller.ts) (Project endpoints), [`apps/backend/src/paket/paket.controller.ts`](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/paket/paket.controller.ts) (Package endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_project_ui["Project workspace<br/>[page.tsx]"]
  node_project_forms["Project forms"]
  node_package_forms["Package forms"]
  node_allocation_forms["Allocation forms"]
  node_import_ui["Excel import dialog"]
  node_master_ui["Master-data workspace<br/>[page.tsx]"]
  node_geography_ui["Location picker<br/>[map-picker.tsx]"]
  node_login_ui["Login page<br/>[page.tsx]"]
  node_users_ui["User administration<br/>[page.tsx]"]
  node_activity_ui["Activity log page<br/>[page.tsx]"]
end

subgraph group_planning["Project planning"]
  node_project_api["Project endpoints"]
  node_project_service["Project operations<br/>[proyek.service.ts]"]
  node_package_api["Package endpoints"]
  node_package_service["Package operations<br/>[paket.service.ts]"]
  node_allocation_api["Allocation endpoints"]
  node_allocation_service["Allocation operations<br/>[alokasi.service.ts]"]
  node_import_api["Import endpoints"]
  node_import_service["Import processing<br/>[import.service.ts]"]
end

subgraph group_reference["Reference data"]
  node_master_api["Master-data endpoints"]
  node_master_service["Master-data operations<br/>[master.service.ts]"]
  node_geography_api["Geography endpoints"]
  node_geography_service["Geography lookup<br/>[wilayah.service.ts]"]
end

subgraph group_identity["Identity and oversight"]
  node_auth_api["Authentication endpoints<br/>[auth.controller.ts]"]
  node_auth_service["Authentication<br/>[auth.service.ts]"]
  node_users_api["User endpoints"]
  node_users_service["User operations<br/>[users.service.ts]"]
  node_activity_api["Activity-log endpoint"]
  node_activity_service["Activity-log queries"]
end

subgraph group_persistence["Persistence"]
  node_database[("Application database<br/>[prisma.service.ts]")]
end

node_user(("Application user"))

node_user -->|"uses"| node_project_ui
node_project_ui -->|"opens"| node_project_forms
node_project_ui -->|"manages packages"| node_package_forms
node_project_ui -->|"manages allocations"| node_allocation_forms
node_user -->|"signs in"| node_login_ui
node_user -->|"administers references"| node_master_ui
node_user -->|"imports projects"| node_import_ui
node_user -->|"selects locations"| node_geography_ui
node_user -->|"administers users"| node_users_ui
node_user -->|"reviews activity"| node_activity_ui
node_project_api -->|"calls"| node_project_service
node_package_api -->|"calls"| node_package_service
node_allocation_api -->|"calls"| node_allocation_service
node_import_api -->|"calls"| node_import_service
node_master_api -->|"calls"| node_master_service
node_geography_api -->|"calls"| node_geography_service
node_auth_api -->|"calls"| node_auth_service
node_users_api -->|"calls"| node_users_service
node_activity_api -->|"calls"| node_activity_service
node_auth_service -->|"reads users"| node_database

click node_project_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/proyek/page.tsx"
click node_project_forms "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/proyek/proyek-form-dialog.tsx"
click node_package_forms "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/proyek/paket-form-dialog.tsx"
click node_allocation_forms "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/proyek/alokasi-form-dialog.tsx"
click node_project_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/proyek/proyek.controller.ts"
click node_project_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/proyek/proyek.service.ts"
click node_package_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/paket/paket.controller.ts"
click node_package_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/paket/paket.service.ts"
click node_allocation_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/alokasi/alokasi.controller.ts"
click node_allocation_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/alokasi/alokasi.service.ts"
click node_import_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/import/import-excel-dialog.tsx"
click node_import_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/import/import.controller.ts"
click node_import_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/import/import.service.ts"
click node_master_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/master/page.tsx"
click node_master_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/master/master.controller.ts"
click node_master_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/master/master.service.ts"
click node_geography_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/map/map-picker.tsx"
click node_geography_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/wilayah/wilayah.controller.ts"
click node_geography_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/wilayah/wilayah.service.ts"
click node_login_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/login/page.tsx"
click node_auth_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/auth/auth.service.ts"
click node_users_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/users/page.tsx"
click node_users_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/users/users.controller.ts"
click node_users_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/users/users.service.ts"
click node_activity_ui "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/activity-log/page.tsx"
click node_activity_api "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/activity-log/activity-log.controller.ts"
click node_activity_service "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/activity-log/activity-log.service.ts"
click node_database "https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/prisma/prisma.service.ts"

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_project_ui,node_project_forms,node_package_forms,node_allocation_forms,node_import_ui,node_master_ui,node_geography_ui,node_login_ui,node_users_ui,node_activity_ui,node_user toneBlue
class node_project_api,node_project_service,node_package_api,node_package_service,node_allocation_api,node_allocation_service,node_import_api,node_import_service toneAmber
class node_master_api,node_master_service,node_geography_api,node_geography_service toneMint
class node_auth_api,node_auth_service,node_users_api,node_users_service,node_activity_api,node_activity_service toneRose
class node_database toneIndigo
```

## Components

### Web application

- [Project workspace](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/proyek/page.tsx): `apps/frontend/src/app/(dashboard)/proyek/page.tsx`
- [Project forms](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/proyek/proyek-form-dialog.tsx): `apps/frontend/src/components/proyek/proyek-form-dialog.tsx`
- [Package forms](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/proyek/paket-form-dialog.tsx): `apps/frontend/src/components/proyek/paket-form-dialog.tsx`
- [Allocation forms](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/proyek/alokasi-form-dialog.tsx): `apps/frontend/src/components/proyek/alokasi-form-dialog.tsx`
- [Excel import dialog](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/import/import-excel-dialog.tsx): `apps/frontend/src/components/import/import-excel-dialog.tsx`
- [Master-data workspace](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/master/page.tsx): `apps/frontend/src/app/(dashboard)/master/page.tsx`
- [Location picker](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/components/map/map-picker.tsx): `apps/frontend/src/components/map/map-picker.tsx`
- [Login page](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/login/page.tsx): `apps/frontend/src/app/login/page.tsx`
- [User administration](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/users/page.tsx): `apps/frontend/src/app/(dashboard)/users/page.tsx`
- [Activity log page](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/frontend/src/app/(dashboard)/activity-log/page.tsx): `apps/frontend/src/app/(dashboard)/activity-log/page.tsx`

### Project planning

- [Project endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/proyek/proyek.controller.ts): `apps/backend/src/proyek/proyek.controller.ts`
- [Project operations](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/proyek/proyek.service.ts): `apps/backend/src/proyek/proyek.service.ts`
- [Package endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/paket/paket.controller.ts): `apps/backend/src/paket/paket.controller.ts`
- [Package operations](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/paket/paket.service.ts): `apps/backend/src/paket/paket.service.ts`
- [Allocation endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/alokasi/alokasi.controller.ts): `apps/backend/src/alokasi/alokasi.controller.ts`
- [Allocation operations](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/alokasi/alokasi.service.ts): `apps/backend/src/alokasi/alokasi.service.ts`
- [Import endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/import/import.controller.ts): `apps/backend/src/import/import.controller.ts`
- [Import processing](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/import/import.service.ts): `apps/backend/src/import/import.service.ts`

### Reference data

- [Master-data endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/master/master.controller.ts): `apps/backend/src/master/master.controller.ts`
- [Master-data operations](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/master/master.service.ts): `apps/backend/src/master/master.service.ts`
- [Geography endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/wilayah/wilayah.controller.ts): `apps/backend/src/wilayah/wilayah.controller.ts`
- [Geography lookup](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/wilayah/wilayah.service.ts): `apps/backend/src/wilayah/wilayah.service.ts`

### Identity and oversight

- [Authentication endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/auth/auth.controller.ts): `apps/backend/src/auth/auth.controller.ts`
- [Authentication](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/auth/auth.service.ts): `apps/backend/src/auth/auth.service.ts`
- [User endpoints](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/users/users.controller.ts): `apps/backend/src/users/users.controller.ts`
- [User operations](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/users/users.service.ts): `apps/backend/src/users/users.service.ts`
- [Activity-log endpoint](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/activity-log/activity-log.controller.ts): `apps/backend/src/activity-log/activity-log.controller.ts`
- [Activity-log queries](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/activity-log/activity-log.service.ts): `apps/backend/src/activity-log/activity-log.service.ts`

### Persistence

- [Application database](https://github.com/mkhalfanrd/new_eperencanaan/blob/main/apps/backend/src/prisma/prisma.service.ts): `apps/backend/src/prisma/prisma.service.ts`

### Other components

- **Application user**

## Connections

- Application user → Project workspace: uses
- Project workspace → Project forms: opens
- Project workspace → Package forms: manages packages
- Project workspace → Allocation forms: manages allocations
- Application user → Login page: signs in
- Application user → Master-data workspace: administers references
- Application user → Excel import dialog: imports projects
- Application user → Location picker: selects locations
- Application user → User administration: administers users
- Application user → Activity log page: reviews activity
- Project endpoints → Project operations: calls
- Package endpoints → Package operations: calls
- Allocation endpoints → Allocation operations: calls
- Import endpoints → Import processing: calls
- Master-data endpoints → Master-data operations: calls
- Geography endpoints → Geography lookup: calls
- Authentication endpoints → Authentication: calls
- User endpoints → User operations: calls
- Activity-log endpoint → Activity-log queries: calls
- Authentication → Application database: reads users
