# es2-limited/idmis architecture

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

- Interactive diagram: https://gitdiagram.com/es2-limited/idmis
- Repository: https://github.com/es2-limited/idmis

## Overview

TRIMING IDMIS 2.0 is a modular information-management system for field data collection, administration, SLIS, monitoring and evaluation, and water-resource infrastructure. A representative workflow is SLIS review: an authenticated user requests the review queue or submits an approval action; the API controller delegates to review business logic, which uses repository queries to access domain records. The web also supports offline synchronization, while a separate worker runs background jobs. Several product branches are documented in the README but their implementation wiring was not sampled, so those relationships are left unverified.

Main entry points: [`apps/api/src/main.ts`](https://github.com/es2-limited/idmis/blob/main/apps/api/src/main.ts) (API application), [`packages/db/src/schema/slis.ts`](https://github.com/es2-limited/idmis/blob/main/packages/db/src/schema/slis.ts) (Domain database), [`apps/web/src/app/index.tsx`](https://github.com/es2-limited/idmis/blob/main/apps/web/src/app/index.tsx) (Web application), [`apps/api/src/modules/slis/controllers/review.controller.ts`](https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/controllers/review.controller.ts) (Review routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["User Applications"]
  node_web_app["Web application<br/>[index.tsx]"]
  node_field_capture["Field capture"]
  node_review_ui["SLIS review UI<br/>[useReview.ts]"]
  node_offline_sync["Offline sync<br/>[sync-engine.ts]"]
end

subgraph group_platform["API Platform"]
  node_api_entry["API application<br/>[main.ts]"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_api_authz["Authorization<br/>[authz.service.ts]"]
  node_review_routes["Review routes"]
end

subgraph group_domains["Domain Services"]
  node_slis_review["SLIS review<br/>[review.service.ts]"]
  node_slis_data["SLIS operations"]
  node_blis["Basin infrastructure"]
  node_me["Monitoring evaluation"]
  node_core["Core administration"]
  node_dashboard["Dashboard"]
end

subgraph group_data["Persistence"]
  node_review_repo["Review repository"]
  node_domain_store[("Domain database<br/>[slis.ts]")]
end

subgraph group_background["Background Work"]
  node_worker["Job dispatcher<br/>[dispatcher.ts]"]
  node_worker_jobs["Background jobs"]
end

node_field_user(("Field user"))

node_field_user -->|"uses"| node_web_app
node_web_app -->|"offers capture"| node_field_capture
node_review_ui -->|"requests review"| node_review_routes
node_review_routes -->|"delegates to"| node_slis_review
node_slis_review -->|"queries records"| node_review_repo
node_review_repo -->|"reads and writes"| node_domain_store
node_offline_sync -.->|"syncs remotely"| node_domain_store
node_api_entry -.->|"serves API"| node_auth
node_api_authz -.->|"resolves access"| node_domain_store
node_api_entry -.->|"exposes SLIS"| node_slis_data
node_api_entry -.->|"exposes BLIS"| node_blis
node_api_entry -.->|"exposes M&amp;E"| node_me
node_api_entry -.->|"exposes administration"| node_core
node_api_entry -.->|"exposes dashboard"| node_dashboard
node_worker -->|"dispatches jobs"| node_worker_jobs

click node_web_app "https://github.com/es2-limited/idmis/blob/main/apps/web/src/app/index.tsx"
click node_field_capture "https://github.com/es2-limited/idmis/tree/main/apps/web/src/modules/field"
click node_review_ui "https://github.com/es2-limited/idmis/blob/main/apps/web/src/modules/slis/hooks/useReview.ts"
click node_offline_sync "https://github.com/es2-limited/idmis/blob/main/packages/sync/src/sync-engine.ts"
click node_api_entry "https://github.com/es2-limited/idmis/blob/main/apps/api/src/main.ts"
click node_auth "https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/auth/services/auth.service.ts"
click node_api_authz "https://github.com/es2-limited/idmis/blob/main/apps/api/src/platform/auth/authz.service.ts"
click node_slis_review "https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/services/review.service.ts"
click node_slis_data "https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/slis"
click node_blis "https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/blis"
click node_me "https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/me"
click node_core "https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/core"
click node_dashboard "https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/dashboard"
click node_review_routes "https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/controllers/review.controller.ts"
click node_review_repo "https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/repositories/review.repository.ts"
click node_domain_store "https://github.com/es2-limited/idmis/blob/main/packages/db/src/schema/slis.ts"
click node_worker "https://github.com/es2-limited/idmis/blob/main/apps/worker/src/dispatcher/dispatcher.ts"
click node_worker_jobs "https://github.com/es2-limited/idmis/tree/main/apps/worker/src/jobs"

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_web_app,node_field_capture,node_review_ui,node_offline_sync,node_field_user toneBlue
class node_api_entry,node_auth,node_api_authz,node_review_routes toneAmber
class node_slis_review,node_slis_data,node_blis,node_me,node_core,node_dashboard toneMint
class node_review_repo,node_domain_store toneRose
class node_worker,node_worker_jobs toneIndigo
```

## Components

### User Applications

- [Web application](https://github.com/es2-limited/idmis/blob/main/apps/web/src/app/index.tsx): `apps/web/src/app/index.tsx`
- [Field capture](https://github.com/es2-limited/idmis/tree/main/apps/web/src/modules/field): `apps/web/src/modules/field`
- [SLIS review UI](https://github.com/es2-limited/idmis/blob/main/apps/web/src/modules/slis/hooks/useReview.ts): `apps/web/src/modules/slis/hooks/useReview.ts`
- [Offline sync](https://github.com/es2-limited/idmis/blob/main/packages/sync/src/sync-engine.ts): `packages/sync/src/sync-engine.ts`

### API Platform

- [API application](https://github.com/es2-limited/idmis/blob/main/apps/api/src/main.ts): `apps/api/src/main.ts`
- [Authentication](https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/auth/services/auth.service.ts): `apps/api/src/modules/auth/services/auth.service.ts`
- [Authorization](https://github.com/es2-limited/idmis/blob/main/apps/api/src/platform/auth/authz.service.ts): `apps/api/src/platform/auth/authz.service.ts`
- [Review routes](https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/controllers/review.controller.ts): `apps/api/src/modules/slis/controllers/review.controller.ts`

### Domain Services

- [SLIS review](https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/services/review.service.ts): `apps/api/src/modules/slis/services/review.service.ts`
- [SLIS operations](https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/slis): `apps/api/src/modules/slis`
- [Basin infrastructure](https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/blis): `apps/api/src/modules/blis`
- [Monitoring evaluation](https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/me): `apps/api/src/modules/me`
- [Core administration](https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/core): `apps/api/src/modules/core`
- [Dashboard](https://github.com/es2-limited/idmis/tree/main/apps/api/src/modules/dashboard): `apps/api/src/modules/dashboard`

### Persistence

- [Review repository](https://github.com/es2-limited/idmis/blob/main/apps/api/src/modules/slis/repositories/review.repository.ts): `apps/api/src/modules/slis/repositories/review.repository.ts`
- [Domain database](https://github.com/es2-limited/idmis/blob/main/packages/db/src/schema/slis.ts): `packages/db/src/schema/slis.ts`

### Background Work

- [Job dispatcher](https://github.com/es2-limited/idmis/blob/main/apps/worker/src/dispatcher/dispatcher.ts): `apps/worker/src/dispatcher/dispatcher.ts`
- [Background jobs](https://github.com/es2-limited/idmis/tree/main/apps/worker/src/jobs): `apps/worker/src/jobs`

### Other components

- **Field user**

## Connections

- Field user → Web application: uses (evidence: `README.md`)
- Web application → Field capture: offers capture (evidence: `README.md`)
- SLIS review UI → Review routes: requests review (evidence: `apps/web/src/modules/slis/hooks/useReview.ts`)
- Review routes → SLIS review: delegates to (evidence: `apps/api/src/modules/slis/controllers/review.controller.ts`)
- SLIS review → Review repository: queries records (evidence: `apps/api/src/modules/slis/services/review.service.ts`)
- Review repository → Domain database: reads and writes (evidence: `apps/api/src/modules/slis/repositories/review.repository.ts`)
- Offline sync → Domain database: syncs remotely
- API application → Authentication: serves API
- Authorization → Domain database: resolves access
- API application → SLIS operations: exposes SLIS
- API application → Basin infrastructure: exposes BLIS
- API application → Monitoring evaluation: exposes M&E
- API application → Core administration: exposes administration
- API application → Dashboard: exposes dashboard
- Job dispatcher → Background jobs: dispatches jobs (evidence: `apps/worker/src/main.ts`)
