# algojogacor/kontrakpaham architecture

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

- Interactive diagram: https://gitdiagram.com/algojogacor/kontrakpaham
- Repository: https://github.com/algojogacor/kontrakpaham

## Overview

KontrakPaham is an Indonesian contract-analysis web app. Users submit contract text or PDF/DOCX files, receive AI-generated risk findings and advice, then can review saved analyses; the tree also exposes account, licensing, chat, negotiation, export, sharing, insights, legal-reference, and provider-management features. The main submission route explicitly parses and validates documents, checks cache and quota, invokes analysis, and persists results. Other feature paths are present in the tree, but their internal wiring was not sampled.

Main entry points: [`src/app/api/analyze/route.ts`](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyze/route.ts) (Analysis submission API), [`src/lib/db.ts`](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/db.ts) (Application database), [`src/lib/auth.ts`](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/auth.ts) (Session and identity), [`src/app/api/analyses/route.ts`](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/route.ts) (Analysis history API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_analysis_ui["Analysis and results<br/>[analyze-view.tsx]"]
  node_result_ui["Result view<br/>[result-view.tsx]"]
  node_history_api["Analysis history API<br/>[route.ts]"]
  node_analysis_detail["Analysis detail API<br/>[route.ts]"]
  node_insights_api["Insights API<br/>[route.ts]"]
  node_chat_api["Analysis chat API<br/>[route.ts]"]
  node_negotiate_api["Negotiation API<br/>[route.ts]"]
  node_export_api["Analysis export API<br/>[route.ts]"]
  node_share_api["Analysis sharing API<br/>[route.ts]"]
end

subgraph group_analysis["Contract analysis"]
  node_submit_api["Analysis submission API<br/>[route.ts]"]
  node_documents["Document extraction<br/>[documents.ts]"]
  node_validation["Text validation<br/>[validation.ts]"]
  node_analysis_engine["Contract analysis<br/>[analyze.ts]"]
  node_analysis_cache["Analysis cache<br/>[analysis-cache.ts]"]
  node_llm["LLM providers<br/>[llm.ts]"]
end

subgraph group_accounts["Accounts and plans"]
  node_auth_api["Authentication APIs<br/>[route.ts]"]
  node_auth_lib["Session and identity<br/>[auth.ts]"]
  node_quota_api["Quota API<br/>[route.ts]"]
  node_quota["Plan and quota rules<br/>[quota.ts]"]
  node_license_redeem["License redemption<br/>[route.ts]"]
end

subgraph group_knowledge["Legal knowledge"]
  node_legal_ui["Legal reference view<br/>[legal-view.tsx]"]
  node_legal_content["Legal content<br/>[legal-content.ts]"]
  node_legal_corpus["Legal corpus<br/>[legal-corpus.ts]"]
end

subgraph group_operations["Administration"]
  node_admin_ui["Admin view<br/>[admin-view.tsx]"]
  node_admin_providers["Provider management API<br/>[route.ts]"]
  node_admin_licenses["License management API<br/>[route.ts]"]
  node_admin_users["User administration API<br/>[route.ts]"]
end

node_user(("Contract user"))
node_db[("Application database<br/>[db.ts]")]

node_user -->|"submits contract"| node_analysis_ui
node_analysis_ui -->|"requests analysis"| node_submit_api
node_submit_api -->|"checks session"| node_auth_lib
node_submit_api -->|"extracts file text"| node_documents
node_submit_api -->|"validates text"| node_validation
node_submit_api -->|"checks and clones cache"| node_analysis_cache
node_submit_api -->|"consumes quota"| node_quota
node_submit_api -->|"runs analysis"| node_analysis_engine
node_submit_api -->|"reads and saves analyses"| node_db
node_submit_api -->|"returns result"| node_analysis_ui
node_analysis_ui -->|"shows findings"| node_result_ui
node_user -->|"requests history"| node_history_api
node_history_api -->|"checks session"| node_auth_lib
node_history_api -->|"reads analyses"| node_db
node_history_api -->|"reads quota"| node_quota
node_user -->|"opens analysis"| node_analysis_detail
node_analysis_detail -->|"checks session"| node_auth_lib
node_analysis_detail -->|"reads or deletes analysis"| node_db
node_user -->|"requests insights"| node_insights_api
node_insights_api -->|"aggregates analyses"| node_db
node_user -->|"asks about analysis"| node_chat_api
node_user -->|"requests negotiation advice"| node_negotiate_api
node_user -->|"exports analysis"| node_export_api
node_user -->|"shares analysis"| node_share_api
node_user -->|"signs in"| node_auth_api
node_auth_api -->|"reads or creates user"| node_db
node_auth_api -->|"verifies and creates session"| node_auth_lib
node_user -->|"checks quota"| node_quota_api
node_quota_api -->|"checks session"| node_auth_lib
node_quota_api -->|"gets plan and quota"| node_quota
node_quota -->|"reads and updates quota"| node_db
node_user -->|"redeems code"| node_license_redeem
node_license_redeem -->|"updates license and plan"| node_db
node_user -->|"browses legal references"| node_legal_ui
node_legal_ui -->|"loads content"| node_legal_content
node_legal_content -->|"uses corpus"| node_legal_corpus
node_user -->|"manages service"| node_admin_ui
node_admin_ui -->|"configures providers"| node_admin_providers
node_admin_ui -->|"manages licenses"| node_admin_licenses
node_admin_ui -->|"reviews users"| node_admin_users
node_admin_providers -->|"reads and writes providers"| node_db
node_admin_providers -->|"invalidates provider cache"| node_llm
node_admin_licenses -->|"reads and creates licenses"| node_db
node_admin_users -->|"reads users and usage"| node_db

click node_analysis_ui "https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/analyze-view.tsx"
click node_result_ui "https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/result-view.tsx"
click node_history_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/route.ts"
click node_analysis_detail "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/route.ts"
click node_insights_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/insights/route.ts"
click node_chat_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/chat/route.ts"
click node_negotiate_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/negotiate/route.ts"
click node_export_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/export/route.ts"
click node_share_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/share/route.ts"
click node_submit_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyze/route.ts"
click node_documents "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/documents.ts"
click node_validation "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/validation.ts"
click node_analysis_engine "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/analyze.ts"
click node_analysis_cache "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/analysis-cache.ts"
click node_llm "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/llm.ts"
click node_db "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/db.ts"
click node_auth_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/auth/signin/route.ts"
click node_auth_lib "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/auth.ts"
click node_quota_api "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/quota/route.ts"
click node_quota "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/quota.ts"
click node_license_redeem "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/license/redeem/route.ts"
click node_legal_ui "https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/legal-view.tsx"
click node_legal_content "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/legal-content.ts"
click node_legal_corpus "https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/legal-corpus.ts"
click node_admin_ui "https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/admin-view.tsx"
click node_admin_providers "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/admin/llm-providers/route.ts"
click node_admin_licenses "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/admin/licenses/route.ts"
click node_admin_users "https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/admin/users/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_analysis_ui,node_result_ui,node_history_api,node_analysis_detail,node_insights_api,node_chat_api,node_negotiate_api,node_export_api,node_share_api,node_user toneBlue
class node_submit_api,node_documents,node_validation,node_analysis_engine,node_analysis_cache,node_llm,node_db toneAmber
class node_auth_api,node_auth_lib,node_quota_api,node_quota,node_license_redeem toneMint
class node_legal_ui,node_legal_content,node_legal_corpus toneRose
class node_admin_ui,node_admin_providers,node_admin_licenses,node_admin_users toneIndigo
```

## Components

### User experience

- [Analysis and results](https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/analyze-view.tsx): `src/components/app/views/analyze-view.tsx`
- [Result view](https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/result-view.tsx): `src/components/app/views/result-view.tsx`
- [Analysis history API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/route.ts): `src/app/api/analyses/route.ts`
- [Analysis detail API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/route.ts): `src/app/api/analyses/[id]/route.ts`
- [Insights API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/insights/route.ts): `src/app/api/insights/route.ts`
- [Analysis chat API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/chat/route.ts): `src/app/api/analyses/[id]/chat/route.ts`
- [Negotiation API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/negotiate/route.ts): `src/app/api/analyses/[id]/negotiate/route.ts`
- [Analysis export API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/export/route.ts): `src/app/api/analyses/[id]/export/route.ts`
- [Analysis sharing API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyses/%5Bid%5D/share/route.ts): `src/app/api/analyses/[id]/share/route.ts`

### Contract analysis

- [Analysis submission API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/analyze/route.ts): `src/app/api/analyze/route.ts`
- [Document extraction](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/documents.ts): `src/lib/documents.ts`
- [Text validation](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/validation.ts): `src/lib/validation.ts`
- [Contract analysis](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/analyze.ts): `src/lib/analyze.ts`
- [Analysis cache](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/analysis-cache.ts): `src/lib/analysis-cache.ts`
- [LLM providers](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/llm.ts): `src/lib/llm.ts`

### Accounts and plans

- [Authentication APIs](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/auth/signin/route.ts): `src/app/api/auth/signin/route.ts`
- [Session and identity](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Quota API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/quota/route.ts): `src/app/api/quota/route.ts`
- [Plan and quota rules](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/quota.ts): `src/lib/quota.ts`
- [License redemption](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/license/redeem/route.ts): `src/app/api/license/redeem/route.ts`

### Legal knowledge

- [Legal reference view](https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/legal-view.tsx): `src/components/app/views/legal-view.tsx`
- [Legal content](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/legal-content.ts): `src/lib/legal-content.ts`
- [Legal corpus](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/legal-corpus.ts): `src/lib/legal-corpus.ts`

### Administration

- [Admin view](https://github.com/algojogacor/kontrakpaham/blob/main/src/components/app/views/admin-view.tsx): `src/components/app/views/admin-view.tsx`
- [Provider management API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/admin/llm-providers/route.ts): `src/app/api/admin/llm-providers/route.ts`
- [License management API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/admin/licenses/route.ts): `src/app/api/admin/licenses/route.ts`
- [User administration API](https://github.com/algojogacor/kontrakpaham/blob/main/src/app/api/admin/users/route.ts): `src/app/api/admin/users/route.ts`

### Other components

- **Contract user**
- [Application database](https://github.com/algojogacor/kontrakpaham/blob/main/src/lib/db.ts): `src/lib/db.ts`

## Connections

- Contract user → Analysis and results: submits contract
- Analysis and results → Analysis submission API: requests analysis
- Analysis submission API → Session and identity: checks session
- Analysis submission API → Document extraction: extracts file text
- Analysis submission API → Text validation: validates text
- Analysis submission API → Analysis cache: checks and clones cache
- Analysis submission API → Plan and quota rules: consumes quota
- Analysis submission API → Contract analysis: runs analysis
- Analysis submission API → Application database: reads and saves analyses
- Analysis submission API → Analysis and results: returns result
- Analysis and results → Result view: shows findings
- Contract user → Analysis history API: requests history
- Analysis history API → Session and identity: checks session
- Analysis history API → Application database: reads analyses
- Analysis history API → Plan and quota rules: reads quota
- Contract user → Analysis detail API: opens analysis
- Analysis detail API → Session and identity: checks session
- Analysis detail API → Application database: reads or deletes analysis
- Contract user → Insights API: requests insights
- Insights API → Application database: aggregates analyses
- Contract user → Analysis chat API: asks about analysis
- Contract user → Negotiation API: requests negotiation advice
- Contract user → Analysis export API: exports analysis
- Contract user → Analysis sharing API: shares analysis
- Contract user → Authentication APIs: signs in
- Authentication APIs → Application database: reads or creates user
- Authentication APIs → Session and identity: verifies and creates session
- Contract user → Quota API: checks quota
- Quota API → Session and identity: checks session
- Quota API → Plan and quota rules: gets plan and quota
- Plan and quota rules → Application database: reads and updates quota
- Contract user → License redemption: redeems code
- License redemption → Application database: updates license and plan
- Contract user → Legal reference view: browses legal references
- Legal reference view → Legal content: loads content
- Legal content → Legal corpus: uses corpus
- Contract user → Admin view: manages service
- Admin view → Provider management API: configures providers
- Admin view → License management API: manages licenses
- Admin view → User administration API: reviews users
- Provider management API → Application database: reads and writes providers
- Provider management API → LLM providers: invalidates provider cache
- License management API → Application database: reads and creates licenses
- User administration API → Application database: reads users and usage
