# unseenap/land_dizitization architecture

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

- Interactive diagram: https://gitdiagram.com/unseenap/land_dizitization
- Repository: https://github.com/unseenap/land_dizitization

## Overview

This is a Next.js land-record digitization workspace: departmental users upload and preserve source documents, configure schemas, process documents through an OCR boundary, validate extracted fields, and have officers correct or approve revisions before records are searched, mapped, exported, or evaluated. The API routes dispatch to server modules, which enforce business rules and use PostgreSQL and private file storage. The README documents broader workflow and integration capabilities than the sampled source shows; those branches are included with only documented relationships, and live OCR and government exchange are marked as optional integrations.

Main entry points: [`src/app/(workspace)`](https://github.com/unseenap/land_dizitization/tree/main/src/app/(workspace)) (Workspace UI), [`database/schema.ts`](https://github.com/unseenap/land_dizitization/blob/main/database/schema.ts) (PostgreSQL), [`src/modules/land-records/server/service.ts`](https://github.com/unseenap/land_dizitization/blob/main/src/modules/land-records/server/service.ts) (Land records service), [`src/modules/documents/server/service.ts`](https://github.com/unseenap/land_dizitization/blob/main/src/modules/documents/server/service.ts) (Document service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace and access"]
  node_ui["Workspace UI"]
  node_identity_api["Identity API"]
  node_identity["Identity service<br/>[service.ts]"]
end

subgraph group_document_flow["Document workflow"]
  node_documents_ui["Document workspace"]
  node_documents_api["Documents API"]
  node_documents["Document service<br/>[service.ts]"]
  node_processing["OCR processing<br/>[service.ts]"]
  node_processing_worker["Processing worker"]
  node_validation["Validation service<br/>[service.ts]"]
  node_verification["Officer verification<br/>[service.ts]"]
end

subgraph group_records["Records and oversight"]
  node_records_api["Records and search API"]
  node_land_records["Land records service<br/>[service.ts]"]
  node_duplicates["Duplicate review<br/>[service.ts]"]
  node_gis["GIS parcel links<br/>[service.ts]"]
  node_feedback["Feedback evaluation<br/>[service.ts]"]
  node_dashboard["Workflow dashboard<br/>[service.ts]"]
end

subgraph group_operations["Administration and exchange"]
  node_admin_api["Admin APIs"]
  node_document_types["Document schemas<br/>[service.ts]"]
  node_master_data["Administrative hierarchy<br/>[service.ts]"]
  node_integrations["Integration service<br/>[service.ts]"]
  node_integration_worker["Integration worker"]
end

subgraph group_runtime["Application runtime"]
  node_database[("PostgreSQL<br/>[schema.ts]")]
  node_storage[("Private file storage<br/>[storage.ts]")]
end

node_users(("Departmental users"))
node_ocr{{"Separate OCR API"}}
node_government{{"Government systems"}}

node_users -->|"use"| node_ui
node_ui -->|"authenticate"| node_identity_api
node_identity_api -->|"dispatch"| node_identity
node_ui -->|"request documents"| node_documents_api
node_documents_api -->|"dispatch"| node_documents
node_documents_ui -->|"upload and review"| node_documents_api
node_documents -->|"store source files"| node_storage
node_documents -->|"persist metadata"| node_database
node_documents -.->|"submit processing"| node_processing
node_processing_worker -.->|"claim jobs"| node_processing
node_processing_worker -.->|"request recognition"| node_ocr
node_ocr -.->|"return results"| node_processing_worker
node_processing -->|"validate extracted fields"| node_validation
node_validation -->|"check candidates"| node_duplicates
node_validation -->|"send for review"| node_verification
node_verification -->|"approve revision"| node_land_records
node_ui -->|"search records"| node_records_api
node_records_api -->|"dispatch"| node_land_records
node_land_records -->|"read and write records"| node_database
node_ui -->|"manage configuration"| node_admin_api
node_admin_api -->|"dispatch schema actions"| node_document_types
node_admin_api -->|"dispatch area actions"| node_master_data
node_ui -->|"request dashboard"| node_dashboard
node_dashboard -->|"read workflow data"| node_database
node_land_records -->|"support parcel links"| node_gis
node_land_records -->|"provide approved records"| node_feedback
node_land_records -.->|"provide approved versions"| node_integrations
node_integration_worker -.->|"run exports"| node_integrations
node_integration_worker -.->|"exchange records"| node_government
node_identity -->|"read and write access data"| node_database
node_document_types -->|"persist schema versions"| node_database
node_master_data -->|"persist hierarchy"| node_database
node_integrations -->|"persist runs"| node_database

click node_ui "https://github.com/unseenap/land_dizitization/tree/main/src/app/(workspace)"
click node_identity_api "https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1/auth"
click node_identity "https://github.com/unseenap/land_dizitization/blob/main/src/modules/identity/server/service.ts"
click node_documents_ui "https://github.com/unseenap/land_dizitization/tree/main/src/modules/documents/ui"
click node_documents_api "https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1/documents"
click node_documents "https://github.com/unseenap/land_dizitization/blob/main/src/modules/documents/server/service.ts"
click node_processing "https://github.com/unseenap/land_dizitization/blob/main/src/modules/processing/server/service.ts"
click node_processing_worker "https://github.com/unseenap/land_dizitization/blob/main/workers/processing-worker.ts"
click node_validation "https://github.com/unseenap/land_dizitization/blob/main/src/modules/validation/server/service.ts"
click node_verification "https://github.com/unseenap/land_dizitization/blob/main/src/modules/verification/server/service.ts"
click node_records_api "https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1/records"
click node_land_records "https://github.com/unseenap/land_dizitization/blob/main/src/modules/land-records/server/service.ts"
click node_duplicates "https://github.com/unseenap/land_dizitization/blob/main/src/modules/duplicates/server/service.ts"
click node_gis "https://github.com/unseenap/land_dizitization/blob/main/src/modules/gis/server/service.ts"
click node_feedback "https://github.com/unseenap/land_dizitization/blob/main/src/modules/feedback/server/service.ts"
click node_dashboard "https://github.com/unseenap/land_dizitization/blob/main/src/modules/dashboard/server/service.ts"
click node_admin_api "https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1"
click node_document_types "https://github.com/unseenap/land_dizitization/blob/main/src/modules/document-types/server/service.ts"
click node_master_data "https://github.com/unseenap/land_dizitization/blob/main/src/modules/master-data/server/service.ts"
click node_integrations "https://github.com/unseenap/land_dizitization/blob/main/src/modules/integrations/server/service.ts"
click node_integration_worker "https://github.com/unseenap/land_dizitization/blob/main/workers/integration-worker.ts"
click node_database "https://github.com/unseenap/land_dizitization/blob/main/database/schema.ts"
click node_storage "https://github.com/unseenap/land_dizitization/blob/main/src/server/storage.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_ui,node_identity_api,node_identity,node_users toneBlue
class node_documents_ui,node_documents_api,node_documents,node_processing,node_processing_worker,node_validation,node_verification toneAmber
class node_records_api,node_land_records,node_duplicates,node_gis,node_feedback,node_dashboard,node_ocr toneMint
class node_admin_api,node_document_types,node_master_data,node_integrations,node_integration_worker toneRose
class node_database,node_storage,node_government toneIndigo
```

## Components

### Workspace and access

- [Workspace UI](https://github.com/unseenap/land_dizitization/tree/main/src/app/(workspace)): `src/app/(workspace)`
- [Identity API](https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1/auth): `src/app/api/v1/auth`
- [Identity service](https://github.com/unseenap/land_dizitization/blob/main/src/modules/identity/server/service.ts): `src/modules/identity/server/service.ts`

### Document workflow

- [Document workspace](https://github.com/unseenap/land_dizitization/tree/main/src/modules/documents/ui): `src/modules/documents/ui`
- [Documents API](https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1/documents): `src/app/api/v1/documents`
- [Document service](https://github.com/unseenap/land_dizitization/blob/main/src/modules/documents/server/service.ts): `src/modules/documents/server/service.ts`
- [OCR processing](https://github.com/unseenap/land_dizitization/blob/main/src/modules/processing/server/service.ts): `src/modules/processing/server/service.ts`
- [Processing worker](https://github.com/unseenap/land_dizitization/blob/main/workers/processing-worker.ts): `workers/processing-worker.ts`
- [Validation service](https://github.com/unseenap/land_dizitization/blob/main/src/modules/validation/server/service.ts): `src/modules/validation/server/service.ts`
- [Officer verification](https://github.com/unseenap/land_dizitization/blob/main/src/modules/verification/server/service.ts): `src/modules/verification/server/service.ts`

### Records and oversight

- [Records and search API](https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1/records): `src/app/api/v1/records`
- [Land records service](https://github.com/unseenap/land_dizitization/blob/main/src/modules/land-records/server/service.ts): `src/modules/land-records/server/service.ts`
- [Duplicate review](https://github.com/unseenap/land_dizitization/blob/main/src/modules/duplicates/server/service.ts): `src/modules/duplicates/server/service.ts`
- [GIS parcel links](https://github.com/unseenap/land_dizitization/blob/main/src/modules/gis/server/service.ts): `src/modules/gis/server/service.ts`
- [Feedback evaluation](https://github.com/unseenap/land_dizitization/blob/main/src/modules/feedback/server/service.ts): `src/modules/feedback/server/service.ts`
- [Workflow dashboard](https://github.com/unseenap/land_dizitization/blob/main/src/modules/dashboard/server/service.ts): `src/modules/dashboard/server/service.ts`

### Administration and exchange

- [Admin APIs](https://github.com/unseenap/land_dizitization/tree/main/src/app/api/v1): `src/app/api/v1`
- [Document schemas](https://github.com/unseenap/land_dizitization/blob/main/src/modules/document-types/server/service.ts): `src/modules/document-types/server/service.ts`
- [Administrative hierarchy](https://github.com/unseenap/land_dizitization/blob/main/src/modules/master-data/server/service.ts): `src/modules/master-data/server/service.ts`
- [Integration service](https://github.com/unseenap/land_dizitization/blob/main/src/modules/integrations/server/service.ts): `src/modules/integrations/server/service.ts`
- [Integration worker](https://github.com/unseenap/land_dizitization/blob/main/workers/integration-worker.ts): `workers/integration-worker.ts`

### Application runtime

- [PostgreSQL](https://github.com/unseenap/land_dizitization/blob/main/database/schema.ts): `database/schema.ts`
- [Private file storage](https://github.com/unseenap/land_dizitization/blob/main/src/server/storage.ts): `src/server/storage.ts`

### Other components

- **Departmental users**
- **Separate OCR API**
- **Government systems**

## Connections

- Departmental users → Workspace UI: use
- Workspace UI → Identity API: authenticate
- Identity API → Identity service: dispatch
- Workspace UI → Documents API: request documents
- Documents API → Document service: dispatch
- Document workspace → Documents API: upload and review
- Document service → Private file storage: store source files
- Document service → PostgreSQL: persist metadata
- Document service → OCR processing: submit processing
- Processing worker → OCR processing: claim jobs
- Processing worker → Separate OCR API: request recognition
- Separate OCR API → Processing worker: return results
- OCR processing → Validation service: validate extracted fields
- Validation service → Duplicate review: check candidates
- Validation service → Officer verification: send for review
- Officer verification → Land records service: approve revision
- Workspace UI → Records and search API: search records
- Records and search API → Land records service: dispatch
- Land records service → PostgreSQL: read and write records
- Workspace UI → Admin APIs: manage configuration
- Admin APIs → Document schemas: dispatch schema actions
- Admin APIs → Administrative hierarchy: dispatch area actions
- Workspace UI → Workflow dashboard: request dashboard
- Workflow dashboard → PostgreSQL: read workflow data
- Land records service → GIS parcel links: support parcel links
- Land records service → Feedback evaluation: provide approved records
- Land records service → Integration service: provide approved versions
- Integration worker → Integration service: run exports
- Integration worker → Government systems: exchange records
- Identity service → PostgreSQL: read and write access data
- Document schemas → PostgreSQL: persist schema versions
- Administrative hierarchy → PostgreSQL: persist hierarchy
- Integration service → PostgreSQL: persist runs
