# ikrgycloud/updated-qr architecture

> Architecture diagram of the GitHub repository ikrgycloud/updated-qr, 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/ikrgycloud/updated-qr
- Repository: https://github.com/ikrgycloud/updated-qr

## Overview

Sri BioAesthetics is a full-stack product catalog and QR-information application. Users register or sign in, then browse, create, edit, soft-delete, restore, and permanently remove products; they can generate and store QR snapshots for product information. The React app invokes the FastAPI routes, which delegate domain work to services and persist product, user, and QR records through SQLAlchemy. The README also documents PostgreSQL initialization and an Nginx `/api` proxy, but their runtime configuration files are not present in the supplied tree, so those links are documented rather than source-verified.

Main entry points: [`forntend/src/App.jsx`](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/App.jsx) (React app), [`backend/app/main.py`](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/main.py) (FastAPI app), [`backend/app/core/database.py`](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/database.py) (Database session), [`backend/app/core/dependencies.py`](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/dependencies.py) (Auth dependency)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_react["React app<br/>[App.jsx]"]
  node_product_views["Product views"]
  node_product_editor["Product editor<br/>[ProductEditor.jsx]"]
  node_product_picker["Product picker<br/>[ProductPicker.jsx]"]
  node_deleted_panel["Deleted products"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["HTTP API"]
  node_fastapi["FastAPI app<br/>[main.py]"]
  node_auth_routes["Auth routes<br/>[auth.py]"]
  node_product_routes["Product routes<br/>[products.py]"]
  node_qr_routes["QR routes<br/>[qr.py]"]
  node_health_routes["Health route<br/>[health.py]"]
end

subgraph group_domain["Domain services"]
  node_auth_service["Authentication<br/>[auth_service.py]"]
  node_product_service["Product catalog<br/>[product_service.py]"]
  node_qr_service["QR generation<br/>[qr_service.py]"]
  node_schemas["Request schemas"]
end

subgraph group_persistence["Persistence and security"]
  node_settings["Configuration<br/>[config.py]"]
  node_security["Token security<br/>[security.py]"]
  node_dependencies["Auth dependency<br/>[dependencies.py]"]
  node_database["Database session<br/>[database.py]"]
  node_product_models[("Product records<br/>[product.py]")]
  node_user_model[("User records<br/>[user.py]")]
  node_qr_model[("QR records<br/>[generated_qr.py]")]
end

node_user(("User"))
node_postgres[("PostgreSQL")]
node_nginx["Nginx proxy"]

node_user -->|"uses"| node_react
node_react -->|"renders"| node_product_views
node_react -->|"renders"| node_product_editor
node_react -->|"renders"| node_product_picker
node_react -->|"renders"| node_deleted_panel
node_react -->|"calls"| node_api_client
node_api_client -.->|"sends /api"| node_nginx
node_nginx -.->|"proxies requests"| node_fastapi
node_fastapi -->|"registers"| node_auth_routes
node_fastapi -->|"registers"| node_product_routes
node_fastapi -->|"registers"| node_qr_routes
node_fastapi -->|"registers"| node_health_routes
node_fastapi -->|"initializes"| node_database
node_auth_routes -->|"delegates"| node_auth_service
node_product_routes -->|"delegates"| node_product_service
node_qr_routes -->|"delegates"| node_qr_service
node_auth_routes -->|"validates with"| node_schemas
node_product_routes -->|"validates with"| node_schemas
node_qr_routes -->|"validates with"| node_schemas
node_auth_routes -->|"requires user"| node_dependencies
node_product_routes -->|"requires user"| node_dependencies
node_qr_routes -->|"requires user"| node_dependencies
node_auth_service -->|"hashes and signs"| node_security
node_dependencies -->|"decodes token"| node_security
node_auth_service -->|"reads and writes"| node_user_model
node_dependencies -->|"loads user"| node_user_model
node_product_service -->|"reads and writes"| node_product_models
node_qr_service -->|"builds snapshot"| node_product_service
node_qr_service -->|"records history"| node_qr_model
node_database -->|"reads URL"| node_settings
node_database -->|"creates tables"| node_product_models
node_database -->|"creates tables"| node_user_model
node_database -->|"creates tables"| node_qr_model
node_database -.->|"connects"| node_postgres

click node_react "https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/App.jsx"
click node_product_views "https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/ProductWorkspace.jsx"
click node_product_editor "https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/ProductEditor.jsx"
click node_product_picker "https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/ProductPicker.jsx"
click node_deleted_panel "https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/DeletedProductsPanel.jsx"
click node_api_client "https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/api.js"
click node_fastapi "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/main.py"
click node_auth_routes "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/auth.py"
click node_product_routes "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/products.py"
click node_qr_routes "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/qr.py"
click node_health_routes "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/health.py"
click node_auth_service "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/services/auth_service.py"
click node_product_service "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/services/product_service.py"
click node_qr_service "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/services/qr_service.py"
click node_schemas "https://github.com/ikrgycloud/updated-qr/tree/main/backend/app/schemas"
click node_settings "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/config.py"
click node_security "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/security.py"
click node_dependencies "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/dependencies.py"
click node_database "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/database.py"
click node_product_models "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/models/product.py"
click node_user_model "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/models/user.py"
click node_qr_model "https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/models/generated_qr.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_react,node_product_views,node_product_editor,node_product_picker,node_deleted_panel,node_api_client,node_user toneBlue
class node_fastapi,node_auth_routes,node_product_routes,node_qr_routes,node_health_routes,node_postgres toneAmber
class node_auth_service,node_product_service,node_qr_service,node_schemas toneMint
class node_settings,node_security,node_dependencies,node_database,node_product_models,node_user_model,node_qr_model toneRose
class node_nginx toneIndigo
```

## Components

### Web application

- [React app](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/App.jsx): `forntend/src/App.jsx`
- [Product views](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/ProductWorkspace.jsx): `forntend/src/components/ProductWorkspace.jsx`
- [Product editor](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/ProductEditor.jsx): `forntend/src/components/ProductEditor.jsx`
- [Product picker](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/ProductPicker.jsx): `forntend/src/components/ProductPicker.jsx`
- [Deleted products](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/components/DeletedProductsPanel.jsx): `forntend/src/components/DeletedProductsPanel.jsx`
- [API client](https://github.com/ikrgycloud/updated-qr/blob/main/forntend/src/api.js): `forntend/src/api.js`

### HTTP API

- [FastAPI app](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/main.py): `backend/app/main.py`
- [Auth routes](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/auth.py): `backend/app/routers/auth.py`
- [Product routes](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/products.py): `backend/app/routers/products.py`
- [QR routes](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/qr.py): `backend/app/routers/qr.py`
- [Health route](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/routers/health.py): `backend/app/routers/health.py`

### Domain services

- [Authentication](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/services/auth_service.py): `backend/app/services/auth_service.py`
- [Product catalog](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/services/product_service.py): `backend/app/services/product_service.py`
- [QR generation](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/services/qr_service.py): `backend/app/services/qr_service.py`
- [Request schemas](https://github.com/ikrgycloud/updated-qr/tree/main/backend/app/schemas): `backend/app/schemas`

### Persistence and security

- [Configuration](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/config.py): `backend/app/core/config.py`
- [Token security](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/security.py): `backend/app/core/security.py`
- [Auth dependency](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/dependencies.py): `backend/app/core/dependencies.py`
- [Database session](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/core/database.py): `backend/app/core/database.py`
- [Product records](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/models/product.py): `backend/app/models/product.py`
- [User records](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/models/user.py): `backend/app/models/user.py`
- [QR records](https://github.com/ikrgycloud/updated-qr/blob/main/backend/app/models/generated_qr.py): `backend/app/models/generated_qr.py`

### Other components

- **User**
- **PostgreSQL**
- **Nginx proxy**

## Connections

- User → React app: uses (evidence: `README.md`)
- React app → Product views: renders (evidence: `forntend/src/App.jsx`)
- React app → Product editor: renders (evidence: `forntend/src/App.jsx`)
- React app → Product picker: renders (evidence: `forntend/src/App.jsx`)
- React app → Deleted products: renders (evidence: `forntend/src/App.jsx`)
- React app → API client: calls (evidence: `forntend/src/App.jsx`)
- API client → Nginx proxy: sends /api (evidence: `README.md`)
- Nginx proxy → FastAPI app: proxies requests (evidence: `README.md`)
- FastAPI app → Auth routes: registers (evidence: `backend/app/main.py`)
- FastAPI app → Product routes: registers (evidence: `backend/app/main.py`)
- FastAPI app → QR routes: registers (evidence: `backend/app/main.py`)
- FastAPI app → Health route: registers (evidence: `backend/app/main.py`)
- FastAPI app → Database session: initializes (evidence: `backend/app/main.py`)
- Auth routes → Authentication: delegates (evidence: `backend/app/routers/auth.py`)
- Product routes → Product catalog: delegates (evidence: `backend/app/routers/products.py`)
- QR routes → QR generation: delegates (evidence: `backend/app/routers/qr.py`)
- Auth routes → Request schemas: validates with (evidence: `backend/app/routers/auth.py`)
- Product routes → Request schemas: validates with (evidence: `backend/app/routers/products.py`)
- QR routes → Request schemas: validates with (evidence: `backend/app/routers/qr.py`)
- Auth routes → Auth dependency: requires user (evidence: `backend/app/routers/auth.py`)
- Product routes → Auth dependency: requires user (evidence: `backend/app/routers/products.py`)
- QR routes → Auth dependency: requires user (evidence: `backend/app/routers/qr.py`)
- Authentication → Token security: hashes and signs (evidence: `backend/app/services/auth_service.py`)
- Auth dependency → Token security: decodes token (evidence: `backend/app/core/dependencies.py`)
- Authentication → User records: reads and writes (evidence: `backend/app/services/auth_service.py`)
- Auth dependency → User records: loads user (evidence: `backend/app/core/dependencies.py`)
- Product catalog → Product records: reads and writes (evidence: `backend/app/services/product_service.py`)
- QR generation → Product catalog: builds snapshot (evidence: `backend/app/services/qr_service.py`)
- QR generation → QR records: records history (evidence: `backend/app/services/qr_service.py`)
- Database session → Configuration: reads URL (evidence: `backend/app/core/database.py`)
- Database session → Product records: creates tables (evidence: `backend/app/core/database.py`)
- Database session → User records: creates tables (evidence: `backend/app/core/database.py`)
- Database session → QR records: creates tables (evidence: `backend/app/core/database.py`)
- Database session → PostgreSQL: connects (evidence: `README.md`)
