# kali-physi-hacker/rosetta-ims architecture

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

- Interactive diagram: https://gitdiagram.com/kali-physi-hacker/rosetta-ims
- Repository: https://github.com/kali-physi-hacker/rosetta-ims

## Overview

Rosetta IMS is an inventory-management system for veterinary and pet-supply operations, delivered through a React SPA and FastAPI API. Staff use authenticated screens to manage products, SKUs, stock, pricing, suppliers and collections; catalogue onboarding adds a staged supplier-file workflow that extracts evidence, validates and resolves products, supports human review, then applies and publishes commercial data. The backend also includes a separate client/pet SSOT ingestion capability. Relationships among catalogue internals are limited to the documented stage and persistence responsibilities; unsampled wiring is not inferred.

Main entry points: [`apps/api/orchestration/catalogue_flows.py`](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/orchestration/catalogue_flows.py) (Catalogue orchestration), [`apps/api/main.py`](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/main.py) (FastAPI app), [`apps/api/routers/catalogue_ingestions.py`](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/catalogue_ingestions.py) (Catalogue API), [`apps/api/routers/products.py`](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/products.py) (Inventory routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_spa["React SPA<br/>[main.tsx]"]
  node_screens["IMS screens"]
  node_client["API client<br/>[client.ts]"]
end

subgraph group_api["API and operations"]
  node_apiapp["FastAPI app<br/>[main.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_inventory["Inventory routes<br/>[products.py]"]
  node_commercial["Pricing and SKU<br/>[pricing_service.py]"]
end

subgraph group_catalogue["Catalogue onboarding"]
  node_catalogueroute["Catalogue API"]
  node_orchestration["Catalogue orchestration<br/>[catalogue_flows.py]"]
  node_source["Source loading"]
  node_extraction["Evidence extraction"]
  node_contracts["Supplier contracts<br/>[registry.py]"]
  node_stages["Pipeline stages"]
  node_review["Review and corrections"]
  node_persistence["Catalogue persistence"]
end

subgraph group_data["Data and integrations"]
  node_cataloguedb[("Catalogue state")]
  node_coredb[("IMS database<br/>[database.py]")]
  node_clients["Client SSOT ingestion<br/>[refresh_all.py]"]
end

node_staff(("Operations staff"))
node_external["Supplier catalogues"]
node_petconnectors["DaySmart and CHS"]

node_staff -->|"uses"| node_spa
node_spa -->|"renders"| node_screens
node_screens -->|"requests"| node_client
node_client -->|"calls API"| node_apiapp
node_apiapp -->|"routes auth"| node_auth
node_apiapp -->|"routes operations"| node_inventory
node_inventory -->|"uses pricing"| node_commercial
node_apiapp -->|"routes onboarding"| node_catalogueroute
node_external -->|"uploads or captures"| node_catalogueroute
node_catalogueroute -->|"dispatches runs"| node_orchestration
node_orchestration -->|"loads sources"| node_source
node_orchestration -->|"extracts evidence"| node_extraction
node_orchestration -->|"resolves contract"| node_contracts
node_orchestration -->|"executes stages"| node_stages
node_catalogueroute -->|"accepts corrections"| node_review
node_stages -->|"persists transitions"| node_persistence
node_review -->|"stores resolutions"| node_persistence
node_persistence -->|"writes state"| node_cataloguedb
node_inventory -->|"reads and writes"| node_coredb
node_petconnectors -->|"provides exports"| node_clients
node_clients -->|"stores client data"| node_coredb

click node_spa "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/web/src/main.tsx"
click node_screens "https://github.com/kali-physi-hacker/rosetta-ims/tree/main/apps/web/src/routes/_authed"
click node_client "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/web/src/lib/api/client.ts"
click node_apiapp "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/main.py"
click node_auth "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/auth.py"
click node_inventory "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/products.py"
click node_commercial "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/pricing_service.py"
click node_catalogueroute "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/catalogue_ingestions.py"
click node_orchestration "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/orchestration/catalogue_flows.py"
click node_source "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/orchestration/catalogue_source_loader.py"
click node_extraction "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_evidence_extraction.py"
click node_contracts "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/schemas/catalogue_pipeline/supplier_contracts/registry.py"
click node_stages "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_pipeline_stages.py"
click node_review "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_evidence_corrections.py"
click node_persistence "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_pipeline_persistence.py"
click node_cataloguedb "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/models/catalogue_pipeline.py"
click node_coredb "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/database.py"
click node_clients "https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/clientssot/refresh_all.py"

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_spa,node_screens,node_client toneBlue
class node_apiapp,node_auth,node_inventory,node_commercial toneAmber
class node_catalogueroute,node_orchestration,node_source,node_extraction,node_contracts,node_stages,node_review,node_persistence toneMint
class node_cataloguedb,node_coredb,node_clients toneRose
class node_staff,node_external,node_petconnectors toneIndigo
```

## Components

### Web application

- [React SPA](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/web/src/main.tsx): `apps/web/src/main.tsx`
- [IMS screens](https://github.com/kali-physi-hacker/rosetta-ims/tree/main/apps/web/src/routes/_authed): `apps/web/src/routes/_authed`
- [API client](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/web/src/lib/api/client.ts): `apps/web/src/lib/api/client.ts`

### API and operations

- [FastAPI app](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/main.py): `apps/api/main.py`
- [Authentication](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/auth.py): `apps/api/routers/auth.py`
- [Inventory routes](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/products.py): `apps/api/routers/products.py`
- [Pricing and SKU](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/pricing_service.py): `apps/api/services/pricing_service.py`

### Catalogue onboarding

- [Catalogue API](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/routers/catalogue_ingestions.py): `apps/api/routers/catalogue_ingestions.py`
- [Catalogue orchestration](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/orchestration/catalogue_flows.py): `apps/api/orchestration/catalogue_flows.py`
- [Source loading](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/orchestration/catalogue_source_loader.py): `apps/api/orchestration/catalogue_source_loader.py`
- [Evidence extraction](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_evidence_extraction.py): `apps/api/services/catalogue_evidence_extraction.py`
- [Supplier contracts](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/schemas/catalogue_pipeline/supplier_contracts/registry.py): `apps/api/schemas/catalogue_pipeline/supplier_contracts/registry.py`
- [Pipeline stages](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_pipeline_stages.py): `apps/api/services/catalogue_pipeline_stages.py`
- [Review and corrections](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_evidence_corrections.py): `apps/api/services/catalogue_evidence_corrections.py`
- [Catalogue persistence](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/services/catalogue_pipeline_persistence.py): `apps/api/services/catalogue_pipeline_persistence.py`

### Data and integrations

- [Catalogue state](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/models/catalogue_pipeline.py): `apps/api/models/catalogue_pipeline.py`
- [IMS database](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/database.py): `apps/api/database.py`
- [Client SSOT ingestion](https://github.com/kali-physi-hacker/rosetta-ims/blob/main/apps/api/clientssot/refresh_all.py): `apps/api/clientssot/refresh_all.py`

### Other components

- **Operations staff**
- **Supplier catalogues**
- **DaySmart and CHS**

## Connections

- Operations staff → React SPA: uses
- React SPA → IMS screens: renders
- IMS screens → API client: requests
- API client → FastAPI app: calls API
- FastAPI app → Authentication: routes auth
- FastAPI app → Inventory routes: routes operations
- Inventory routes → Pricing and SKU: uses pricing
- FastAPI app → Catalogue API: routes onboarding
- Supplier catalogues → Catalogue API: uploads or captures
- Catalogue API → Catalogue orchestration: dispatches runs
- Catalogue orchestration → Source loading: loads sources
- Catalogue orchestration → Evidence extraction: extracts evidence
- Catalogue orchestration → Supplier contracts: resolves contract
- Catalogue orchestration → Pipeline stages: executes stages
- Catalogue API → Review and corrections: accepts corrections
- Pipeline stages → Catalogue persistence: persists transitions
- Review and corrections → Catalogue persistence: stores resolutions
- Catalogue persistence → Catalogue state: writes state
- Inventory routes → IMS database: reads and writes
- DaySmart and CHS → Client SSOT ingestion: provides exports
- Client SSOT ingestion → IMS database: stores client data
