# chalodk/lims architecture

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

- Interactive diagram: https://gitdiagram.com/chalodk/lims
- Repository: https://github.com/chalodk/lims

## Overview

This is a multi-tenant phytopathology LIMS. Laboratory users manage clients, samples and analysis results, validate findings, then generate reports; client users have a feature-gated portal for sample and detection summaries. Administration covers users, roles, company features and billing, while dashboards and statistics expose operational and analytical views. The graph emphasizes sampled API behavior and documented product capabilities; unsampled page-to-API wiring and database schema details are not asserted.

Main entry points: [`src/lib/auth/api-auth.ts`](https://github.com/chalodk/lims/blob/main/src/lib/auth/api-auth.ts) (API auth guard), [`src/app/api/clients/route.ts`](https://github.com/chalodk/lims/blob/main/src/app/api/clients/route.ts) (Client API), [`src/app/api/results/route.ts`](https://github.com/chalodk/lims/blob/main/src/app/api/results/route.ts) (Results API), [`src/app/api/cliente/dashboard/route.ts`](https://github.com/chalodk/lims/blob/main/src/app/api/cliente/dashboard/route.ts) (Portal dashboard API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Tenancy"]
  node_auth_ui["Login and setup"]
  node_auth_api["Auth API<br/>[route.ts]"]
  node_auth_guard["API auth guard<br/>[api-auth.ts]"]
  node_user_creation["User creation service"]
end

subgraph group_lab["Laboratory Operations"]
  node_client_ui["Client management<br/>[page.tsx]"]
  node_clients_api["Client API<br/>[route.ts]"]
  node_sample_ui["Results workspace<br/>[page.tsx]"]
  node_results_api["Results API<br/>[route.ts]"]
  node_result_item_api["Result detail API<br/>[route.ts]"]
  node_findings_sync["Normalized findings"]
end

subgraph group_reporting["Reports and Analytics"]
  node_client_portal["Client portal<br/>[page.tsx]"]
  node_portal_dashboard_api["Portal dashboard API<br/>[route.ts]"]
  node_stats_ui["Statistics dashboard<br/>[page.tsx]"]
  node_stats_api["Chart statistics API<br/>[route.ts]"]
  node_report_ui["Report workspace<br/>[page.tsx]"]
  node_pdf_api["PDF report builder<br/>[route.ts]"]
  node_pdf_templates["Template resolver<br/>[templates.ts]"]
end

subgraph group_admin["Administration"]
  node_admin_ui["Administration pages<br/>[page.tsx]"]
  node_settings_users_api["User administration API<br/>[route.ts]"]
  node_feature_flags["Company feature flags"]
end

node_user(("Lab or client user"))
node_supabase[("Supabase platform")]
node_pdfmonkey{{"PDFMonkey"}}

node_user -->|"signs in"| node_auth_ui
node_auth_ui -->|"requests identity"| node_auth_api
node_auth_api -->|"uses auth"| node_supabase
node_user -->|"manages clients"| node_client_ui
node_client_ui -->|"client requests"| node_clients_api
node_clients_api -->|"runs through"| node_auth_guard
node_clients_api -->|"reads and writes"| node_supabase
node_clients_api -->|"creates or links users"| node_user_creation
node_user -->|"enters results"| node_sample_ui
node_sample_ui -->|"result requests"| node_results_api
node_results_api -->|"runs through"| node_auth_guard
node_results_api -->|"queries and writes"| node_supabase
node_results_api -->|"synchronizes findings"| node_findings_sync
node_user -->|"views results"| node_client_portal
node_client_portal -->|"requests dashboard"| node_portal_dashboard_api
node_portal_dashboard_api -->|"runs through"| node_auth_guard
node_portal_dashboard_api -->|"checks access"| node_feature_flags
node_portal_dashboard_api -->|"reads sample data"| node_supabase
node_user -->|"reviews analytics"| node_stats_ui
node_stats_ui -->|"requests charts"| node_stats_api
node_stats_api -->|"runs through"| node_auth_guard
node_stats_api -->|"reads samples and results"| node_supabase
node_user -->|"generates reports"| node_report_ui
node_report_ui -->|"requests PDF"| node_pdf_api
node_pdf_api -->|"runs through"| node_auth_guard
node_pdf_api -->|"resolves template"| node_pdf_templates
node_pdf_api -.->|"renders report"| node_pdfmonkey
node_user -->|"administers system"| node_admin_ui
node_admin_ui -->|"manages users"| node_settings_users_api
node_settings_users_api -->|"authenticates and queries"| node_supabase
node_settings_users_api -->|"checks portal feature"| node_feature_flags
node_settings_users_api -->|"creates accounts"| node_user_creation

click node_auth_ui "https://github.com/chalodk/lims/blob/main/src/components/auth/GenericLimsLoginScreen.tsx"
click node_auth_api "https://github.com/chalodk/lims/blob/main/src/app/api/auth/user/route.ts"
click node_auth_guard "https://github.com/chalodk/lims/blob/main/src/lib/auth/api-auth.ts"
click node_client_ui "https://github.com/chalodk/lims/blob/main/src/app/clients/page.tsx"
click node_clients_api "https://github.com/chalodk/lims/blob/main/src/app/api/clients/route.ts"
click node_user_creation "https://github.com/chalodk/lims/blob/main/src/lib/services/userCreationService.ts"
click node_sample_ui "https://github.com/chalodk/lims/blob/main/src/app/results/page.tsx"
click node_results_api "https://github.com/chalodk/lims/blob/main/src/app/api/results/route.ts"
click node_result_item_api "https://github.com/chalodk/lims/blob/main/src/app/api/results/%5Bid%5D/route.ts"
click node_findings_sync "https://github.com/chalodk/lims/blob/main/src/lib/services/findingsNormalizedService.ts"
click node_client_portal "https://github.com/chalodk/lims/blob/main/src/app/cliente/page.tsx"
click node_portal_dashboard_api "https://github.com/chalodk/lims/blob/main/src/app/api/cliente/dashboard/route.ts"
click node_stats_ui "https://github.com/chalodk/lims/blob/main/src/app/estadisticas/page.tsx"
click node_stats_api "https://github.com/chalodk/lims/blob/main/src/app/api/estadisticas/charts/route.ts"
click node_report_ui "https://github.com/chalodk/lims/blob/main/src/app/reports/page.tsx"
click node_pdf_api "https://github.com/chalodk/lims/blob/main/src/app/api/reports/pdfmonkey/route.ts"
click node_pdf_templates "https://github.com/chalodk/lims/blob/main/src/lib/pdfmonkey/templates.ts"
click node_admin_ui "https://github.com/chalodk/lims/blob/main/src/app/admin/features/page.tsx"
click node_settings_users_api "https://github.com/chalodk/lims/blob/main/src/app/api/settings/users/route.ts"
click node_feature_flags "https://github.com/chalodk/lims/blob/main/src/lib/services/companyFeatureFlags.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_auth_ui,node_auth_api,node_auth_guard,node_user_creation,node_user toneBlue
class node_client_ui,node_clients_api,node_sample_ui,node_results_api,node_result_item_api,node_findings_sync,node_supabase toneAmber
class node_client_portal,node_portal_dashboard_api,node_stats_ui,node_stats_api,node_report_ui,node_pdf_api,node_pdf_templates toneMint
class node_admin_ui,node_settings_users_api,node_feature_flags toneRose
class node_pdfmonkey toneIndigo
```

## Components

### Access and Tenancy

- [Login and setup](https://github.com/chalodk/lims/blob/main/src/components/auth/GenericLimsLoginScreen.tsx): `src/components/auth/GenericLimsLoginScreen.tsx`
- [Auth API](https://github.com/chalodk/lims/blob/main/src/app/api/auth/user/route.ts): `src/app/api/auth/user/route.ts`
- [API auth guard](https://github.com/chalodk/lims/blob/main/src/lib/auth/api-auth.ts): `src/lib/auth/api-auth.ts`
- [User creation service](https://github.com/chalodk/lims/blob/main/src/lib/services/userCreationService.ts): `src/lib/services/userCreationService.ts`

### Laboratory Operations

- [Client management](https://github.com/chalodk/lims/blob/main/src/app/clients/page.tsx): `src/app/clients/page.tsx`
- [Client API](https://github.com/chalodk/lims/blob/main/src/app/api/clients/route.ts): `src/app/api/clients/route.ts`
- [Results workspace](https://github.com/chalodk/lims/blob/main/src/app/results/page.tsx): `src/app/results/page.tsx`
- [Results API](https://github.com/chalodk/lims/blob/main/src/app/api/results/route.ts): `src/app/api/results/route.ts`
- [Result detail API](https://github.com/chalodk/lims/blob/main/src/app/api/results/%5Bid%5D/route.ts): `src/app/api/results/[id]/route.ts`
- [Normalized findings](https://github.com/chalodk/lims/blob/main/src/lib/services/findingsNormalizedService.ts): `src/lib/services/findingsNormalizedService.ts`

### Reports and Analytics

- [Client portal](https://github.com/chalodk/lims/blob/main/src/app/cliente/page.tsx): `src/app/cliente/page.tsx`
- [Portal dashboard API](https://github.com/chalodk/lims/blob/main/src/app/api/cliente/dashboard/route.ts): `src/app/api/cliente/dashboard/route.ts`
- [Statistics dashboard](https://github.com/chalodk/lims/blob/main/src/app/estadisticas/page.tsx): `src/app/estadisticas/page.tsx`
- [Chart statistics API](https://github.com/chalodk/lims/blob/main/src/app/api/estadisticas/charts/route.ts): `src/app/api/estadisticas/charts/route.ts`
- [Report workspace](https://github.com/chalodk/lims/blob/main/src/app/reports/page.tsx): `src/app/reports/page.tsx`
- [PDF report builder](https://github.com/chalodk/lims/blob/main/src/app/api/reports/pdfmonkey/route.ts): `src/app/api/reports/pdfmonkey/route.ts`
- [Template resolver](https://github.com/chalodk/lims/blob/main/src/lib/pdfmonkey/templates.ts): `src/lib/pdfmonkey/templates.ts`

### Administration

- [Administration pages](https://github.com/chalodk/lims/blob/main/src/app/admin/features/page.tsx): `src/app/admin/features/page.tsx`
- [User administration API](https://github.com/chalodk/lims/blob/main/src/app/api/settings/users/route.ts): `src/app/api/settings/users/route.ts`
- [Company feature flags](https://github.com/chalodk/lims/blob/main/src/lib/services/companyFeatureFlags.ts): `src/lib/services/companyFeatureFlags.ts`

### Other components

- **Lab or client user**
- **Supabase platform**
- **PDFMonkey**

## Connections

- Lab or client user → Login and setup: signs in
- Login and setup → Auth API: requests identity
- Auth API → Supabase platform: uses auth
- Lab or client user → Client management: manages clients
- Client management → Client API: client requests
- Client API → API auth guard: runs through
- Client API → Supabase platform: reads and writes
- Client API → User creation service: creates or links users
- Lab or client user → Results workspace: enters results
- Results workspace → Results API: result requests
- Results API → API auth guard: runs through
- Results API → Supabase platform: queries and writes
- Results API → Normalized findings: synchronizes findings
- Lab or client user → Client portal: views results
- Client portal → Portal dashboard API: requests dashboard
- Portal dashboard API → API auth guard: runs through
- Portal dashboard API → Company feature flags: checks access
- Portal dashboard API → Supabase platform: reads sample data
- Lab or client user → Statistics dashboard: reviews analytics
- Statistics dashboard → Chart statistics API: requests charts
- Chart statistics API → API auth guard: runs through
- Chart statistics API → Supabase platform: reads samples and results
- Lab or client user → Report workspace: generates reports
- Report workspace → PDF report builder: requests PDF
- PDF report builder → API auth guard: runs through
- PDF report builder → Template resolver: resolves template
- PDF report builder → PDFMonkey: renders report
- Lab or client user → Administration pages: administers system
- Administration pages → User administration API: manages users
- User administration API → Supabase platform: authenticates and queries
- User administration API → Company feature flags: checks portal feature
- User administration API → User creation service: creates accounts
