# llamasearchai/opengov-foodsafety architecture

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

- Interactive diagram: https://gitdiagram.com/llamasearchai/opengov-foodsafety
- Repository: https://github.com/llamasearchai/opengov-foodsafety

## Overview

OpenGov-FoodSafety is a FastAPI food-safety inspection management application. Its main user workflow is to authenticate, then create, list, retrieve, update, or delete inspection-style items through the API; item data is persisted in an async SQLAlchemy database. A separate CLI supports database initialization/seeding and AI analysis through agent services. The README also documents OpenAI and Ollama integrations. Connections among unsampled AI internals and inspection-specific workflows are not inferred beyond the documented capabilities.

Main entry points: [`src/opengovfood/api/deps.py`](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/deps.py) (Auth dependencies), [`src/opengovfood/cli.py`](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/cli.py) (CLI), [`src/opengovfood/api/users.py`](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/users.py) (User routes), [`src/opengovfood/api/items.py`](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/items.py) (Item routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entrypoints"]
  node_web["Web application<br/>[app.py]"]
  node_cli["CLI<br/>[cli.py]"]
end

subgraph group_api["API and identity"]
  node_api_router["API router<br/>[api.py]"]
  node_user_routes["User routes<br/>[users.py]"]
  node_item_routes["Item routes<br/>[items.py]"]
  node_auth_deps["Auth dependencies<br/>[deps.py]"]
  node_security["Token security<br/>[security.py]"]
end

subgraph group_domain["Items and persistence"]
  node_user_crud["User operations<br/>[user.py]"]
  node_item_crud["Item operations<br/>[item.py]"]
  node_crud_base["CRUD base<br/>[base.py]"]
  node_models["Database models<br/>[user.py]"]
  node_item_model["Inspection item model<br/>[item.py]"]
  node_schemas["API schemas<br/>[item.py]"]
  node_database[("Async database<br/>[database.py]")]
end

subgraph group_ai["AI analysis"]
  node_agent["Agent analysis<br/>[agent_service.py]"]
  node_ollama["Ollama service<br/>[ollama_service.py]"]
end

node_operator(("Inspector or operator"))
node_ai_provider{{"AI provider"}}

node_operator -->|"uses API"| node_web
node_web -->|"mounts routes"| node_api_router
node_api_router -->|"includes routes"| node_user_routes
node_api_router -->|"includes routes"| node_item_routes
node_user_routes -->|"uses dependencies"| node_auth_deps
node_item_routes -->|"uses dependencies"| node_auth_deps
node_auth_deps -->|"gets sessions"| node_database
node_auth_deps -->|"loads user"| node_user_crud
node_auth_deps -->|"uses JWT"| node_security
node_user_routes -->|"authenticates users"| node_user_crud
node_user_routes -->|"creates token"| node_security
node_item_routes -->|"manages items"| node_item_crud
node_user_crud -->|"extends operations"| node_crud_base
node_item_crud -->|"extends operations"| node_crud_base
node_crud_base -->|"queries models"| node_models
node_user_crud -->|"persists users"| node_models
node_item_crud -->|"persists items"| node_item_model
node_item_routes -->|"validates payloads"| node_schemas
node_database -->|"creates schema"| node_models
node_operator -->|"runs commands"| node_cli
node_cli -->|"initializes or seeds"| node_database
node_cli -->|"runs analysis"| node_agent
node_cli -->|"selects provider"| node_ollama
node_agent -.->|"analyzes with"| node_ai_provider
node_ollama -.->|"calls Ollama"| node_ai_provider

click node_web "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/web/app.py"
click node_api_router "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/api.py"
click node_user_routes "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/users.py"
click node_item_routes "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/items.py"
click node_auth_deps "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/deps.py"
click node_security "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/core/security.py"
click node_user_crud "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/crud/user.py"
click node_item_crud "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/crud/item.py"
click node_crud_base "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/crud/base.py"
click node_models "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/models/user.py"
click node_item_model "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/models/item.py"
click node_schemas "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/schemas/item.py"
click node_database "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/core/database.py"
click node_cli "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/cli.py"
click node_agent "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/services/agent_service.py"
click node_ollama "https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/services/ollama_service.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_web,node_cli toneBlue
class node_api_router,node_user_routes,node_item_routes,node_auth_deps,node_security toneAmber
class node_user_crud,node_item_crud,node_crud_base,node_models,node_item_model,node_schemas,node_database toneMint
class node_agent,node_ollama toneRose
class node_operator,node_ai_provider toneIndigo
```

## Components

### Application entrypoints

- [Web application](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/web/app.py): `src/opengovfood/web/app.py`
- [CLI](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/cli.py): `src/opengovfood/cli.py`

### API and identity

- [API router](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/api.py): `src/opengovfood/api/api.py`
- [User routes](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/users.py): `src/opengovfood/api/users.py`
- [Item routes](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/items.py): `src/opengovfood/api/items.py`
- [Auth dependencies](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/api/deps.py): `src/opengovfood/api/deps.py`
- [Token security](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/core/security.py): `src/opengovfood/core/security.py`

### Items and persistence

- [User operations](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/crud/user.py): `src/opengovfood/crud/user.py`
- [Item operations](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/crud/item.py): `src/opengovfood/crud/item.py`
- [CRUD base](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/crud/base.py): `src/opengovfood/crud/base.py`
- [Database models](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/models/user.py): `src/opengovfood/models/user.py`
- [Inspection item model](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/models/item.py): `src/opengovfood/models/item.py`
- [API schemas](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/schemas/item.py): `src/opengovfood/schemas/item.py`
- [Async database](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/core/database.py): `src/opengovfood/core/database.py`

### AI analysis

- [Agent analysis](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/services/agent_service.py): `src/opengovfood/services/agent_service.py`
- [Ollama service](https://github.com/llamasearchai/opengov-foodsafety/blob/main/src/opengovfood/services/ollama_service.py): `src/opengovfood/services/ollama_service.py`

### Other components

- **Inspector or operator**
- **AI provider**

## Connections

- Inspector or operator → Web application: uses API (evidence: `README.md`)
- Web application → API router: mounts routes (evidence: `src/opengovfood/web/app.py`)
- API router → User routes: includes routes (evidence: `src/opengovfood/api/api.py`)
- API router → Item routes: includes routes (evidence: `src/opengovfood/api/api.py`)
- User routes → Auth dependencies: uses dependencies (evidence: `src/opengovfood/api/users.py`)
- Item routes → Auth dependencies: uses dependencies (evidence: `src/opengovfood/api/items.py`)
- Auth dependencies → Async database: gets sessions (evidence: `src/opengovfood/api/deps.py`)
- Auth dependencies → User operations: loads user (evidence: `src/opengovfood/api/deps.py`)
- Auth dependencies → Token security: uses JWT (evidence: `src/opengovfood/api/deps.py`)
- User routes → User operations: authenticates users (evidence: `src/opengovfood/api/users.py`)
- User routes → Token security: creates token (evidence: `src/opengovfood/api/users.py`)
- Item routes → Item operations: manages items (evidence: `src/opengovfood/api/items.py`)
- User operations → CRUD base: extends operations (evidence: `src/opengovfood/crud/user.py`)
- Item operations → CRUD base: extends operations (evidence: `src/opengovfood/crud/item.py`)
- CRUD base → Database models: queries models (evidence: `src/opengovfood/crud/base.py`)
- User operations → Database models: persists users (evidence: `src/opengovfood/crud/user.py`)
- Item operations → Inspection item model: persists items (evidence: `src/opengovfood/crud/item.py`)
- Item routes → API schemas: validates payloads (evidence: `src/opengovfood/api/items.py`)
- Async database → Database models: creates schema (evidence: `src/opengovfood/core/database.py`)
- Inspector or operator → CLI: runs commands (evidence: `README.md`)
- CLI → Async database: initializes or seeds (evidence: `src/opengovfood/cli.py`)
- CLI → Agent analysis: runs analysis (evidence: `src/opengovfood/cli.py`)
- CLI → Ollama service: selects provider (evidence: `src/opengovfood/cli.py`)
- Agent analysis → AI provider: analyzes with
- Ollama service → AI provider: calls Ollama
