# sayuru99/energy_optimizer architecture

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

- Interactive diagram: https://gitdiagram.com/sayuru99/energy_optimizer
- Repository: https://github.com/sayuru99/energy_optimizer

## Overview

This is a FastAPI energy-optimization API for factories: users can authenticate and manage factory energy inputs, while the product also exposes schedule optimization, dashboards, and reports. The sampled optimizer chooses machine run times using tariff rates; cost calculation estimates current-schedule costs. The API router dispatches to these domain endpoints, and startup creates database tables and seeds example data. Endpoint implementations for factories, machines, tariffs, optimization, dashboards, and reports were not sampled, so their internal calls and persistence wiring are not inferred.

Main entry points: [`app/api/v1/api.py`](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/api.py) (API router), [`app/main.py`](https://github.com/sayuru99/energy_optimizer/blob/main/app/main.py) (API application), [`app/api/v1/endpoints/auth.py`](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/auth.py) (Authentication), [`app/core/deps.py`](https://github.com/sayuru99/energy_optimizer/blob/main/app/core/deps.py) (Request dependencies)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and access"]
  node_app["API application<br/>[main.py]"]
  node_router["API router<br/>[api.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_deps["Request dependencies<br/>[deps.py]"]
  node_security["Token security<br/>[security.py]"]
  node_schemas["API schemas"]
end

subgraph group_factory["Factory operations"]
  node_factories["Factory management<br/>[factories.py]"]
  node_machines["Machine management<br/>[machines.py]"]
  node_tariffs["Tariff management<br/>[tariffs.py]"]
end

subgraph group_analysis["Energy analysis"]
  node_optimization["Schedule optimization<br/>[optimization.py]"]
  node_optimizer["Schedule solver<br/>[optimizer.py]"]
  node_cost["Cost estimation<br/>[cost.py]"]
  node_dashboard["Energy dashboard<br/>[dashboard.py]"]
  node_reports["Energy reports<br/>[reports.py]"]
end

subgraph group_data["Persistence"]
  node_session["Database sessions<br/>[session.py]"]
  node_models["Domain models"]
  node_database[("Relational database")]
end

node_manager(("Factory user"))

node_manager -->|"uses API"| node_app
node_app -->|"mounts routes"| node_router
node_router -->|"dispatches"| node_auth
node_router -->|"dispatches"| node_factories
node_router -->|"dispatches"| node_machines
node_router -->|"dispatches"| node_tariffs
node_router -->|"dispatches"| node_optimization
node_router -->|"dispatches"| node_dashboard
node_router -->|"dispatches"| node_reports
node_auth -->|"requests session"| node_deps
node_auth -->|"checks credentials"| node_security
node_deps -->|"decodes token"| node_security
node_deps -->|"opens session"| node_session
node_session -->|"connects"| node_database
node_app -->|"initializes"| node_session
node_app -->|"creates tables"| node_models
node_optimizer -.-> node_cost

click node_app "https://github.com/sayuru99/energy_optimizer/blob/main/app/main.py"
click node_router "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/api.py"
click node_auth "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/auth.py"
click node_deps "https://github.com/sayuru99/energy_optimizer/blob/main/app/core/deps.py"
click node_security "https://github.com/sayuru99/energy_optimizer/blob/main/app/core/security.py"
click node_factories "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/factories.py"
click node_machines "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/machines.py"
click node_tariffs "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/tariffs.py"
click node_optimization "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/optimization.py"
click node_optimizer "https://github.com/sayuru99/energy_optimizer/blob/main/app/services/optimizer.py"
click node_cost "https://github.com/sayuru99/energy_optimizer/blob/main/app/services/cost.py"
click node_dashboard "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/dashboard.py"
click node_reports "https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/reports.py"
click node_schemas "https://github.com/sayuru99/energy_optimizer/tree/main/app/schemas"
click node_session "https://github.com/sayuru99/energy_optimizer/blob/main/app/db/session.py"
click node_models "https://github.com/sayuru99/energy_optimizer/tree/main/app/models"

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_app,node_router,node_auth,node_deps,node_security,node_schemas,node_manager toneBlue
class node_factories,node_machines,node_tariffs toneAmber
class node_optimization,node_optimizer,node_cost,node_dashboard,node_reports toneMint
class node_session,node_models,node_database toneRose
```

## Components

### API and access

- [API application](https://github.com/sayuru99/energy_optimizer/blob/main/app/main.py): `app/main.py`
- [API router](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/api.py): `app/api/v1/api.py`
- [Authentication](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/auth.py): `app/api/v1/endpoints/auth.py`
- [Request dependencies](https://github.com/sayuru99/energy_optimizer/blob/main/app/core/deps.py): `app/core/deps.py`
- [Token security](https://github.com/sayuru99/energy_optimizer/blob/main/app/core/security.py): `app/core/security.py`
- [API schemas](https://github.com/sayuru99/energy_optimizer/tree/main/app/schemas): `app/schemas`

### Factory operations

- [Factory management](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/factories.py): `app/api/v1/endpoints/factories.py`
- [Machine management](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/machines.py): `app/api/v1/endpoints/machines.py`
- [Tariff management](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/tariffs.py): `app/api/v1/endpoints/tariffs.py`

### Energy analysis

- [Schedule optimization](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/optimization.py): `app/api/v1/endpoints/optimization.py`
- [Schedule solver](https://github.com/sayuru99/energy_optimizer/blob/main/app/services/optimizer.py): `app/services/optimizer.py`
- [Cost estimation](https://github.com/sayuru99/energy_optimizer/blob/main/app/services/cost.py): `app/services/cost.py`
- [Energy dashboard](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/dashboard.py): `app/api/v1/endpoints/dashboard.py`
- [Energy reports](https://github.com/sayuru99/energy_optimizer/blob/main/app/api/v1/endpoints/reports.py): `app/api/v1/endpoints/reports.py`

### Persistence

- [Database sessions](https://github.com/sayuru99/energy_optimizer/blob/main/app/db/session.py): `app/db/session.py`
- [Domain models](https://github.com/sayuru99/energy_optimizer/tree/main/app/models): `app/models`
- **Relational database**

### Other components

- **Factory user**

## Connections

- Factory user → API application: uses API
- API application → API router: mounts routes
- API router → Authentication: dispatches
- API router → Factory management: dispatches
- API router → Machine management: dispatches
- API router → Tariff management: dispatches
- API router → Schedule optimization: dispatches
- API router → Energy dashboard: dispatches
- API router → Energy reports: dispatches
- Authentication → Request dependencies: requests session
- Authentication → Token security: checks credentials
- Request dependencies → Token security: decodes token
- Request dependencies → Database sessions: opens session
- Database sessions → Relational database: connects
- API application → Database sessions: initializes
- API application → Domain models: creates tables
- Schedule solver → Cost estimation
