# wafaesey-star/aplikasi-peradilan-pidana architecture

> Architecture diagram of the GitHub repository wafaesey-star/aplikasi-peradilan-pidana, 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/wafaesey-star/aplikasi-peradilan-pidana
- Repository: https://github.com/wafaesey-star/aplikasi-peradilan-pidana

## Overview

This repository implements an integrated criminal-justice workflow across four separately deployed applications, each with its own Supabase database. Police records SPDP and BAP and sends the case to the prosecutor; the prosecutor prepares and forwards charges to court; the court handles hearings and issues a decision, sending prison sentences to Lapas or optional acquittal notices back to Police. The graph follows documented webhooks and sampled route behavior; unsampled screens are represented by their exact tree paths, without assuming their internal wiring.

Main entry points: [`sistem-peradilan-pidana/app-pengadilan/lib/supabase.ts`](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/lib/supabase.ts) (Court database), [`sistem-peradilan-pidana/app-pengadilan/app/putusan/page.tsx`](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/putusan/page.tsx) (Decisions and verdicts), [`sistem-peradilan-pidana/app-kejaksaan/lib/supabase.ts`](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/lib/supabase.ts) (Prosecution database), [`sistem-peradilan-pidana/app-lapas/lib/supabase.ts`](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/lib/supabase.ts) (Prison database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_police["Police"]
  node_police_case["SPDP and suspects<br/>[page.tsx]"]
  node_police_bap["BAP management<br/>[page.tsx]"]
  node_police_send["Send BAP<br/>[route.ts]"]
  node_police_inbox["Acquittal inbox<br/>[route.ts]"]
  node_police_notice["Notifications<br/>[page.tsx]"]
  node_police_db[("Police database<br/>[supabase.ts]")]
end

subgraph group_prosecution["Prosecution"]
  node_prosecution_files["Incoming case files<br/>[page.tsx]"]
  node_prosecution_inbox["BAP inbox<br/>[route.ts]"]
  node_prosecution_charges["Prepare charges<br/>[page.tsx]"]
  node_prosecution_send["Forward charges<br/>[route.ts]"]
  node_prosecution_notify["Acquittal notice<br/>[route.ts]"]
  node_prosecution_db[("Prosecution database<br/>[supabase.ts]")]
end

subgraph group_court["Court"]
  node_court_inbox["Charges inbox<br/>[route.ts]"]
  node_court_charges["Received charges<br/>[page.tsx]"]
  node_court_hearings["Court hearings<br/>[page.tsx]"]
  node_court_decisions["Decisions and verdicts<br/>[page.tsx]"]
  node_court_send["Send verdict<br/>[route.ts]"]
  node_court_notify["Acquittal notice<br/>[route.ts]"]
  node_court_db[("Court database<br/>[supabase.ts]")]
end

subgraph group_prison["Prison"]
  node_prison_inbox["Verdict inbox<br/>[route.ts]"]
  node_prison_population["Inmate records<br/>[page.tsx]"]
  node_prison_remission["Remission management<br/>[page.tsx]"]
  node_prison_release["Release records<br/>[page.tsx]"]
  node_prison_db[("Prison database<br/>[supabase.ts]")]
end

node_user(("Agency user"))

node_user -->|"records case"| node_police_case
node_user -->|"manages BAP"| node_police_bap
node_user -->|"reviews files"| node_prosecution_files
node_user -->|"prepares charges"| node_prosecution_charges
node_user -->|"reviews charges"| node_court_charges
node_user -->|"manages hearings"| node_court_hearings
node_user -->|"records decision"| node_court_decisions
node_user -->|"manages inmates"| node_prison_population
node_user -->|"manages remission"| node_prison_remission
node_user -->|"records release"| node_prison_release
node_police_bap -->|"submits BAP"| node_police_send
node_police_send -->|"reads and updates"| node_police_db
node_police_send -->|"POSTs BAP and SPDP"| node_prosecution_inbox
node_prosecution_inbox -->|"inserts case file"| node_prosecution_db
node_prosecution_files -->|"reads case files"| node_prosecution_db
node_prosecution_charges -->|"manages charges"| node_prosecution_db
node_prosecution_send -->|"reads and updates"| node_prosecution_db
node_prosecution_send -->|"POSTs charges"| node_court_inbox
node_court_inbox -->|"inserts charges"| node_court_db
node_court_charges -->|"reads charges"| node_court_db
node_court_hearings -->|"manages hearings"| node_court_db
node_court_decisions -->|"reads and writes"| node_court_db
node_court_decisions -->|"sends prison verdict"| node_court_send
node_court_decisions -->|"sends acquittal notice"| node_court_notify
node_court_send -->|"reads and updates"| node_court_db
node_court_send -->|"POSTs verdict"| node_prison_inbox
node_court_notify -->|"reads and updates"| node_court_db
node_court_notify -.->|"POSTs acquittal notice"| node_police_inbox
node_prosecution_notify -.->|"POSTs acquittal notice"| node_police_inbox
node_police_inbox -->|"inserts notice"| node_police_db
node_prison_inbox -->|"inserts inmate"| node_prison_db
node_prison_population -->|"manages inmate records"| node_prison_db
node_prison_remission -->|"manages remission"| node_prison_db
node_prison_release -->|"manages releases"| node_prison_db

click node_police_case "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/spdp/page.tsx"
click node_police_bap "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/bap/page.tsx"
click node_police_send "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/api/kirim-bap/route.ts"
click node_police_inbox "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/api/inbox/bebas/route.ts"
click node_police_notice "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/notif/page.tsx"
click node_police_db "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/lib/supabase.ts"
click node_prosecution_files "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/berkas/page.tsx"
click node_prosecution_inbox "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/api/inbox/bap/route.ts"
click node_prosecution_charges "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/dakwaan/page.tsx"
click node_prosecution_send "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/api/limpahkan-dakwaan/route.ts"
click node_prosecution_notify "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/api/notif-bebas/route.ts"
click node_prosecution_db "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/lib/supabase.ts"
click node_court_inbox "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/api/inbox/dakwaan/route.ts"
click node_court_charges "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/dakwaan/page.tsx"
click node_court_hearings "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/sidang/page.tsx"
click node_court_decisions "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/putusan/page.tsx"
click node_court_send "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/api/kirim-vonis/route.ts"
click node_court_notify "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/api/notif-bebas/route.ts"
click node_court_db "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/lib/supabase.ts"
click node_prison_inbox "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/api/inbox/vonis/route.ts"
click node_prison_population "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/napi/page.tsx"
click node_prison_remission "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/remisi/page.tsx"
click node_prison_release "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/bebas/page.tsx"
click node_prison_db "https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/lib/supabase.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_police_case,node_police_bap,node_police_send,node_police_inbox,node_police_notice,node_police_db,node_user toneBlue
class node_prosecution_files,node_prosecution_inbox,node_prosecution_charges,node_prosecution_send,node_prosecution_notify,node_prosecution_db toneAmber
class node_court_inbox,node_court_charges,node_court_hearings,node_court_decisions,node_court_send,node_court_notify,node_court_db toneMint
class node_prison_inbox,node_prison_population,node_prison_remission,node_prison_release,node_prison_db toneRose
```

## Components

### Police

- [SPDP and suspects](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/spdp/page.tsx): `sistem-peradilan-pidana/app-polisi/app/spdp/page.tsx`
- [BAP management](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/bap/page.tsx): `sistem-peradilan-pidana/app-polisi/app/bap/page.tsx`
- [Send BAP](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/api/kirim-bap/route.ts): `sistem-peradilan-pidana/app-polisi/app/api/kirim-bap/route.ts`
- [Acquittal inbox](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/api/inbox/bebas/route.ts): `sistem-peradilan-pidana/app-polisi/app/api/inbox/bebas/route.ts`
- [Notifications](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/app/notif/page.tsx): `sistem-peradilan-pidana/app-polisi/app/notif/page.tsx`
- [Police database](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-polisi/lib/supabase.ts): `sistem-peradilan-pidana/app-polisi/lib/supabase.ts`

### Prosecution

- [Incoming case files](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/berkas/page.tsx): `sistem-peradilan-pidana/app-kejaksaan/app/berkas/page.tsx`
- [BAP inbox](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/api/inbox/bap/route.ts): `sistem-peradilan-pidana/app-kejaksaan/app/api/inbox/bap/route.ts`
- [Prepare charges](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/dakwaan/page.tsx): `sistem-peradilan-pidana/app-kejaksaan/app/dakwaan/page.tsx`
- [Forward charges](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/api/limpahkan-dakwaan/route.ts): `sistem-peradilan-pidana/app-kejaksaan/app/api/limpahkan-dakwaan/route.ts`
- [Acquittal notice](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/app/api/notif-bebas/route.ts): `sistem-peradilan-pidana/app-kejaksaan/app/api/notif-bebas/route.ts`
- [Prosecution database](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-kejaksaan/lib/supabase.ts): `sistem-peradilan-pidana/app-kejaksaan/lib/supabase.ts`

### Court

- [Charges inbox](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/api/inbox/dakwaan/route.ts): `sistem-peradilan-pidana/app-pengadilan/app/api/inbox/dakwaan/route.ts`
- [Received charges](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/dakwaan/page.tsx): `sistem-peradilan-pidana/app-pengadilan/app/dakwaan/page.tsx`
- [Court hearings](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/sidang/page.tsx): `sistem-peradilan-pidana/app-pengadilan/app/sidang/page.tsx`
- [Decisions and verdicts](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/putusan/page.tsx): `sistem-peradilan-pidana/app-pengadilan/app/putusan/page.tsx`
- [Send verdict](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/api/kirim-vonis/route.ts): `sistem-peradilan-pidana/app-pengadilan/app/api/kirim-vonis/route.ts`
- [Acquittal notice](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/app/api/notif-bebas/route.ts): `sistem-peradilan-pidana/app-pengadilan/app/api/notif-bebas/route.ts`
- [Court database](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-pengadilan/lib/supabase.ts): `sistem-peradilan-pidana/app-pengadilan/lib/supabase.ts`

### Prison

- [Verdict inbox](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/api/inbox/vonis/route.ts): `sistem-peradilan-pidana/app-lapas/app/api/inbox/vonis/route.ts`
- [Inmate records](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/napi/page.tsx): `sistem-peradilan-pidana/app-lapas/app/napi/page.tsx`
- [Remission management](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/remisi/page.tsx): `sistem-peradilan-pidana/app-lapas/app/remisi/page.tsx`
- [Release records](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/app/bebas/page.tsx): `sistem-peradilan-pidana/app-lapas/app/bebas/page.tsx`
- [Prison database](https://github.com/wafaesey-star/aplikasi-peradilan-pidana/blob/main/sistem-peradilan-pidana/app-lapas/lib/supabase.ts): `sistem-peradilan-pidana/app-lapas/lib/supabase.ts`

### Other components

- **Agency user**

## Connections

- Agency user → SPDP and suspects: records case
- Agency user → BAP management: manages BAP
- Agency user → Incoming case files: reviews files
- Agency user → Prepare charges: prepares charges
- Agency user → Received charges: reviews charges
- Agency user → Court hearings: manages hearings
- Agency user → Decisions and verdicts: records decision
- Agency user → Inmate records: manages inmates
- Agency user → Remission management: manages remission
- Agency user → Release records: records release
- BAP management → Send BAP: submits BAP
- Send BAP → Police database: reads and updates
- Send BAP → BAP inbox: POSTs BAP and SPDP
- BAP inbox → Prosecution database: inserts case file
- Incoming case files → Prosecution database: reads case files
- Prepare charges → Prosecution database: manages charges
- Forward charges → Prosecution database: reads and updates
- Forward charges → Charges inbox: POSTs charges
- Charges inbox → Court database: inserts charges
- Received charges → Court database: reads charges
- Court hearings → Court database: manages hearings
- Decisions and verdicts → Court database: reads and writes
- Decisions and verdicts → Send verdict: sends prison verdict
- Decisions and verdicts → Acquittal notice: sends acquittal notice
- Send verdict → Court database: reads and updates
- Send verdict → Verdict inbox: POSTs verdict
- Acquittal notice → Court database: reads and updates
- Acquittal notice → Acquittal inbox: POSTs acquittal notice
- Acquittal notice → Acquittal inbox: POSTs acquittal notice
- Acquittal inbox → Police database: inserts notice
- Verdict inbox → Prison database: inserts inmate
- Inmate records → Prison database: manages inmate records
- Remission management → Prison database: manages remission
- Release records → Prison database: manages releases
