# syeimamsayyid/pokjadocument architecture

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

## Overview

This is a Next.js application for BNN South Sulawesi’s E-POKJA HUKER services: public partnership applications and activity information, partner document workflows, staff/admin operations, and legal assistance. Users apply or register, track requests, and manage cooperation documents; administrators review records, publish activity information, and handle archives and reports. Google Sheets is the evidenced data store. The graph preserves major capabilities visible in the route and page tree, but many page-to-API relationships are not shown in the sampled excerpts, so those links are omitted.

Main entry points: [`lib/sheet.ts`](https://github.com/syeimamsayyid/pokjadocument/blob/master/lib/sheet.ts) (Sheets access layer), [`app/beranda/page.tsx`](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/beranda/page.tsx) (Public information), [`app/pengajuan/page.tsx`](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/pengajuan/page.tsx) (Partnership application), [`app/api/kelola-kegiatan/route.ts`](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/kelola-kegiatan/route.ts) (Activity API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public services"]
  node_public_site["Public information<br/>[page.tsx]"]
  node_application_form["Partnership application<br/>[page.tsx]"]
  node_request_tracking["Request tracking<br/>[page.tsx]"]
  node_chatbot["FAQ chatbot<br/>[ChatbotWidget.tsx]"]
end

subgraph group_partner["Partner documents"]
  node_partner_portal["Partner dashboard<br/>[page.tsx]"]
  node_document_ui["Document workspace<br/>[page.tsx]"]
  node_document_api["Document workflow API<br/>[route.ts]"]
end

subgraph group_operations["Staff operations"]
  node_archive_ui["Document archive<br/>[page.tsx]"]
  node_archive_api["Archive API<br/>[route.ts]"]
  node_admin_dashboard["Admin dashboard<br/>[page.tsx]"]
  node_request_admin["Request management<br/>[page.tsx]"]
  node_activity_admin["Activity management<br/>[page.tsx]"]
  node_planning["Activity planning<br/>[page.tsx]"]
  node_legal_services["Legal assistance<br/>[page.tsx]"]
  node_admin_roles["Superadmin controls<br/>[page.tsx]"]
end

subgraph group_platform["Application services"]
  node_sheet_api["Sheets access layer<br/>[sheet.ts]"]
  node_sheets_store[("Google Sheets")]
  node_session_auth["Session authorization<br/>[auth.ts]"]
  node_faq_api["Chatbot FAQ API<br/>[route.ts]"]
  node_home_api["Homepage data API<br/>[route.ts]"]
  node_activity_api["Activity API<br/>[route.ts]"]
  node_request_api["Application API<br/>[route.ts]"]
end

node_visitor(("Public visitor"))
node_partner_user(("Partner user"))
node_staff(("BNN staff"))

node_visitor -->|"views"| node_public_site
node_visitor -->|"submits"| node_application_form
node_visitor -->|"checks status"| node_request_tracking
node_partner_user -->|"opens"| node_partner_portal
node_staff -->|"uses"| node_admin_dashboard
node_application_form -->|"renders"| node_chatbot
node_public_site -->|"renders"| node_chatbot
node_chatbot -->|"loads FAQs"| node_faq_api
node_document_ui -.->|"manages documents"| node_document_api
node_document_api -->|"reads and updates"| node_sheet_api
node_archive_ui -.->|"manages archive"| node_archive_api
node_archive_api -->|"reads and appends"| node_sheet_api
node_admin_dashboard -->|"navigates"| node_request_admin
node_activity_admin -.->|"loads activities"| node_activity_api
node_public_site -.->|"loads information"| node_home_api
node_application_form -.->|"sends application"| node_request_api
node_home_api -->|"reads activity data"| node_sheet_api
node_activity_api -->|"reads activity data"| node_sheet_api
node_request_api -->|"uses storage helpers"| node_sheet_api
node_activity_api -->|"checks roles"| node_session_auth
node_sheet_api -->|"reads and writes"| node_sheets_store

click node_public_site "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/beranda/page.tsx"
click node_application_form "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/pengajuan/page.tsx"
click node_request_tracking "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/cek-pengajuan/page.tsx"
click node_chatbot "https://github.com/syeimamsayyid/pokjadocument/blob/master/components/ChatbotWidget.tsx"
click node_partner_portal "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/mitra/page.tsx"
click node_document_ui "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/mitra/dokumen/%5Bid%5D/page.tsx"
click node_document_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/dokumen/%5Bid%5D/route.ts"
click node_archive_ui "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/arsip/page.tsx"
click node_archive_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/arsip-dokumen/route.ts"
click node_admin_dashboard "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/admin/page.tsx"
click node_request_admin "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/pengajuan/page.tsx"
click node_activity_admin "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/kelola-kegiatan/page.tsx"
click node_planning "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/rencana/page.tsx"
click node_legal_services "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/hukum/pendampingan/page.tsx"
click node_admin_roles "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/superadmin/page.tsx"
click node_sheet_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/lib/sheet.ts"
click node_session_auth "https://github.com/syeimamsayyid/pokjadocument/blob/master/lib/auth.ts"
click node_faq_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/chatbot/faq/route.ts"
click node_home_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/beranda/route.ts"
click node_activity_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/kelola-kegiatan/route.ts"
click node_request_api "https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/pengajuan/route.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_public_site,node_application_form,node_request_tracking,node_chatbot,node_partner_user toneBlue
class node_partner_portal,node_document_ui,node_document_api toneAmber
class node_archive_ui,node_archive_api,node_admin_dashboard,node_request_admin,node_activity_admin,node_planning,node_legal_services,node_admin_roles toneMint
class node_sheet_api,node_sheets_store,node_session_auth,node_faq_api,node_home_api,node_activity_api,node_request_api toneRose
class node_visitor,node_staff toneIndigo
```

## Components

### Public services

- [Public information](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/beranda/page.tsx): `app/beranda/page.tsx`
- [Partnership application](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/pengajuan/page.tsx): `app/pengajuan/page.tsx`
- [Request tracking](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/cek-pengajuan/page.tsx): `app/cek-pengajuan/page.tsx`
- [FAQ chatbot](https://github.com/syeimamsayyid/pokjadocument/blob/master/components/ChatbotWidget.tsx): `components/ChatbotWidget.tsx`

### Partner documents

- [Partner dashboard](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/mitra/page.tsx): `app/dashboard/mitra/page.tsx`
- [Document workspace](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/mitra/dokumen/%5Bid%5D/page.tsx): `app/mitra/dokumen/[id]/page.tsx`
- [Document workflow API](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/dokumen/%5Bid%5D/route.ts): `app/api/dokumen/[id]/route.ts`

### Staff operations

- [Document archive](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/arsip/page.tsx): `app/dashboard/arsip/page.tsx`
- [Archive API](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/arsip-dokumen/route.ts): `app/api/arsip-dokumen/route.ts`
- [Admin dashboard](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/admin/page.tsx): `app/dashboard/admin/page.tsx`
- [Request management](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/pengajuan/page.tsx): `app/dashboard/pengajuan/page.tsx`
- [Activity management](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/kelola-kegiatan/page.tsx): `app/dashboard/kelola-kegiatan/page.tsx`
- [Activity planning](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/rencana/page.tsx): `app/dashboard/rencana/page.tsx`
- [Legal assistance](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/hukum/pendampingan/page.tsx): `app/dashboard/hukum/pendampingan/page.tsx`
- [Superadmin controls](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/dashboard/superadmin/page.tsx): `app/dashboard/superadmin/page.tsx`

### Application services

- [Sheets access layer](https://github.com/syeimamsayyid/pokjadocument/blob/master/lib/sheet.ts): `lib/sheet.ts`
- **Google Sheets**
- [Session authorization](https://github.com/syeimamsayyid/pokjadocument/blob/master/lib/auth.ts): `lib/auth.ts`
- [Chatbot FAQ API](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/chatbot/faq/route.ts): `app/api/chatbot/faq/route.ts`
- [Homepage data API](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/beranda/route.ts): `app/api/beranda/route.ts`
- [Activity API](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/kelola-kegiatan/route.ts): `app/api/kelola-kegiatan/route.ts`
- [Application API](https://github.com/syeimamsayyid/pokjadocument/blob/master/app/api/pengajuan/route.ts): `app/api/pengajuan/route.ts`

### Other components

- **Public visitor**
- **Partner user**
- **BNN staff**

## Connections

- Public visitor → Public information: views
- Public visitor → Partnership application: submits
- Public visitor → Request tracking: checks status
- Partner user → Partner dashboard: opens
- BNN staff → Admin dashboard: uses
- Partnership application → FAQ chatbot: renders (evidence: `app/pengajuan/page.tsx`)
- Public information → FAQ chatbot: renders (evidence: `app/beranda/page.tsx`)
- FAQ chatbot → Chatbot FAQ API: loads FAQs (evidence: `components/ChatbotWidget.tsx`)
- Document workspace → Document workflow API: manages documents
- Document workflow API → Sheets access layer: reads and updates (evidence: `app/api/dokumen/[id]/route.ts`)
- Document archive → Archive API: manages archive
- Archive API → Sheets access layer: reads and appends (evidence: `app/api/arsip-dokumen/route.ts`)
- Admin dashboard → Request management: navigates (evidence: `app/dashboard/admin/page.tsx`)
- Activity management → Activity API: loads activities
- Public information → Homepage data API: loads information
- Partnership application → Application API: sends application
- Homepage data API → Sheets access layer: reads activity data (evidence: `app/api/beranda/route.ts`)
- Activity API → Sheets access layer: reads activity data (evidence: `app/api/kelola-kegiatan/route.ts`)
- Application API → Sheets access layer: uses storage helpers (evidence: `app/api/pengajuan/route.ts`)
- Activity API → Session authorization: checks roles (evidence: `app/api/kelola-kegiatan/route.ts`)
- Sheets access layer → Google Sheets: reads and writes (evidence: `lib/sheet.ts`)
