# omerktk/demo-api-python-application architecture

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

- Interactive diagram: https://gitdiagram.com/omerktk/demo-api-python-application
- Repository: https://github.com/omerktk/demo-api-python-application

## Overview

This repository pairs a Kivy client with a PHP/MySQL REST API for authentication, user and transaction management, and logs. The main workflow is a user opening the app, signing in, and using its screens to manage API data; API clients can also call the documented endpoints directly. The sampled transaction screen confirms API requests for transaction CRUD, while README documents the other endpoint families. Wiring from the remaining screens is not shown in sampled source, so those links are omitted.

Main entry points: [`api/config/config.php`](https://github.com/omerktk/demo-api-python-application/blob/main/api/config/config.php) (PDO configuration), [`app_on_api/app.py`](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/app.py) (Screen manager), [`app_on_api/pages/transactions_screen.py`](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/transactions_screen.py) (Transactions screen), [`api/transactions/create/index.php`](https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/create/index.php) (Create transaction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Kivy client"]
  node_kivy_app["Screen manager<br/>[app.py]"]
  node_login_screen["Login screen<br/>[login_screen.py]"]
  node_dashboard_screen["Dashboard"]
  node_users_screen["Users screen<br/>[users_screen.py]"]
  node_transactions_screen["Transactions screen"]
  node_logs_screen["Logs screen<br/>[logs_screen.py]"]
end

subgraph group_auth["Authentication"]
  node_api_auth["Token authentication<br/>[index.php]"]
  node_api_config["PDO configuration<br/>[config.php]"]
end

subgraph group_users["User management"]
  node_users_create["Create user<br/>[index.php]"]
  node_users_read["Read users<br/>[index.php]"]
  node_users_update["Update user<br/>[index.php]"]
  node_users_delete["Delete user<br/>[index.php]"]
  node_users_findtoken["Find by token<br/>[index.php]"]
end

subgraph group_transactions["Transactions"]
  node_transactions_create["Create transaction<br/>[index.php]"]
  node_transactions_read["Read transactions<br/>[index.php]"]
  node_transactions_update["Update transaction<br/>[index.php]"]
  node_transactions_delete["Delete transaction<br/>[index.php]"]
end

subgraph group_logs["Logging"]
  node_logs_create["Create log<br/>[index.php]"]
  node_logs_read["Read logs<br/>[index.php]"]
end

node_app_user(("App user"))
node_api_consumer(("API consumer"))
node_api_docs["API documentation<br/>[index.php]"]
node_mysql[("MySQL database<br/>[demo.sql]")]

node_app_user -->|"opens"| node_kivy_app
node_kivy_app -->|"registers"| node_login_screen
node_kivy_app -->|"registers"| node_dashboard_screen
node_kivy_app -->|"registers"| node_users_screen
node_kivy_app -->|"registers"| node_transactions_screen
node_kivy_app -->|"registers"| node_logs_screen
node_transactions_screen -->|"posts create"| node_transactions_create
node_transactions_screen -->|"posts read"| node_transactions_read
node_transactions_screen -->|"posts update"| node_transactions_update
node_transactions_screen -->|"posts delete"| node_transactions_delete
node_api_consumer -->|"posts token"| node_api_auth
node_api_consumer -->|"posts user"| node_users_create
node_api_consumer -->|"posts query"| node_users_read
node_api_consumer -->|"posts update"| node_users_update
node_api_consumer -->|"posts delete"| node_users_delete
node_api_consumer -->|"posts lookup"| node_users_findtoken
node_api_consumer -->|"posts create"| node_transactions_create
node_api_consumer -->|"posts query"| node_transactions_read
node_api_consumer -->|"posts update"| node_transactions_update
node_api_consumer -->|"posts delete"| node_transactions_delete
node_api_consumer -->|"posts create"| node_logs_create
node_api_consumer -->|"posts query"| node_logs_read
node_api_auth -->|"loads config"| node_api_config
node_users_create -->|"loads config"| node_api_config
node_users_read -->|"loads config"| node_api_config
node_users_update -->|"loads config"| node_api_config
node_users_delete -->|"loads config"| node_api_config
node_users_findtoken -->|"loads config"| node_api_config
node_transactions_create -->|"loads config"| node_api_config
node_transactions_read -->|"loads config"| node_api_config
node_transactions_update -->|"loads config"| node_api_config
node_transactions_delete -->|"loads config"| node_api_config
node_logs_create -->|"loads config"| node_api_config
node_logs_read -->|"loads config"| node_api_config
node_api_config -->|"queries"| node_mysql
node_api_docs -->|"checks token"| node_api_config
node_api_consumer -->|"views docs"| node_api_docs

click node_kivy_app "https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/app.py"
click node_login_screen "https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/login_screen.py"
click node_dashboard_screen "https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/dashboard_screen.py"
click node_users_screen "https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/users_screen.py"
click node_transactions_screen "https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/transactions_screen.py"
click node_logs_screen "https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/logs_screen.py"
click node_api_auth "https://github.com/omerktk/demo-api-python-application/blob/main/api/auth/index.php"
click node_api_config "https://github.com/omerktk/demo-api-python-application/blob/main/api/config/config.php"
click node_users_create "https://github.com/omerktk/demo-api-python-application/blob/main/api/users/create/index.php"
click node_users_read "https://github.com/omerktk/demo-api-python-application/blob/main/api/users/read/index.php"
click node_users_update "https://github.com/omerktk/demo-api-python-application/blob/main/api/users/update/index.php"
click node_users_delete "https://github.com/omerktk/demo-api-python-application/blob/main/api/users/delete/index.php"
click node_users_findtoken "https://github.com/omerktk/demo-api-python-application/blob/main/api/users/findtoken/index.php"
click node_transactions_create "https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/create/index.php"
click node_transactions_read "https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/read/index.php"
click node_transactions_update "https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/update/index.php"
click node_transactions_delete "https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/delete/index.php"
click node_logs_create "https://github.com/omerktk/demo-api-python-application/blob/main/api/logs/create/index.php"
click node_logs_read "https://github.com/omerktk/demo-api-python-application/blob/main/api/logs/read/index.php"
click node_api_docs "https://github.com/omerktk/demo-api-python-application/blob/main/index.php"
click node_mysql "https://github.com/omerktk/demo-api-python-application/blob/main/demo.sql"

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_kivy_app,node_login_screen,node_dashboard_screen,node_users_screen,node_transactions_screen,node_logs_screen,node_app_user toneBlue
class node_api_auth,node_api_config,node_mysql toneAmber
class node_users_create,node_users_read,node_users_update,node_users_delete,node_users_findtoken,node_api_consumer,node_api_docs toneMint
class node_transactions_create,node_transactions_read,node_transactions_update,node_transactions_delete toneRose
class node_logs_create,node_logs_read toneIndigo
```

## Components

### Kivy client

- [Screen manager](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/app.py): `app_on_api/app.py`
- [Login screen](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/login_screen.py): `app_on_api/pages/login_screen.py`
- [Dashboard](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/dashboard_screen.py): `app_on_api/pages/dashboard_screen.py`
- [Users screen](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/users_screen.py): `app_on_api/pages/users_screen.py`
- [Transactions screen](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/transactions_screen.py): `app_on_api/pages/transactions_screen.py`
- [Logs screen](https://github.com/omerktk/demo-api-python-application/blob/main/app_on_api/pages/logs_screen.py): `app_on_api/pages/logs_screen.py`

### Authentication

- [Token authentication](https://github.com/omerktk/demo-api-python-application/blob/main/api/auth/index.php): `api/auth/index.php`
- [PDO configuration](https://github.com/omerktk/demo-api-python-application/blob/main/api/config/config.php): `api/config/config.php`

### User management

- [Create user](https://github.com/omerktk/demo-api-python-application/blob/main/api/users/create/index.php): `api/users/create/index.php`
- [Read users](https://github.com/omerktk/demo-api-python-application/blob/main/api/users/read/index.php): `api/users/read/index.php`
- [Update user](https://github.com/omerktk/demo-api-python-application/blob/main/api/users/update/index.php): `api/users/update/index.php`
- [Delete user](https://github.com/omerktk/demo-api-python-application/blob/main/api/users/delete/index.php): `api/users/delete/index.php`
- [Find by token](https://github.com/omerktk/demo-api-python-application/blob/main/api/users/findtoken/index.php): `api/users/findtoken/index.php`

### Transactions

- [Create transaction](https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/create/index.php): `api/transactions/create/index.php`
- [Read transactions](https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/read/index.php): `api/transactions/read/index.php`
- [Update transaction](https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/update/index.php): `api/transactions/update/index.php`
- [Delete transaction](https://github.com/omerktk/demo-api-python-application/blob/main/api/transactions/delete/index.php): `api/transactions/delete/index.php`

### Logging

- [Create log](https://github.com/omerktk/demo-api-python-application/blob/main/api/logs/create/index.php): `api/logs/create/index.php`
- [Read logs](https://github.com/omerktk/demo-api-python-application/blob/main/api/logs/read/index.php): `api/logs/read/index.php`

### Other components

- **App user**
- **API consumer**
- [API documentation](https://github.com/omerktk/demo-api-python-application/blob/main/index.php): `index.php`
- [MySQL database](https://github.com/omerktk/demo-api-python-application/blob/main/demo.sql): `demo.sql`

## Connections

- App user → Screen manager: opens
- Screen manager → Login screen: registers
- Screen manager → Dashboard: registers
- Screen manager → Users screen: registers
- Screen manager → Transactions screen: registers
- Screen manager → Logs screen: registers
- Transactions screen → Create transaction: posts create
- Transactions screen → Read transactions: posts read
- Transactions screen → Update transaction: posts update
- Transactions screen → Delete transaction: posts delete
- API consumer → Token authentication: posts token
- API consumer → Create user: posts user
- API consumer → Read users: posts query
- API consumer → Update user: posts update
- API consumer → Delete user: posts delete
- API consumer → Find by token: posts lookup
- API consumer → Create transaction: posts create
- API consumer → Read transactions: posts query
- API consumer → Update transaction: posts update
- API consumer → Delete transaction: posts delete
- API consumer → Create log: posts create
- API consumer → Read logs: posts query
- Token authentication → PDO configuration: loads config
- Create user → PDO configuration: loads config
- Read users → PDO configuration: loads config
- Update user → PDO configuration: loads config
- Delete user → PDO configuration: loads config
- Find by token → PDO configuration: loads config
- Create transaction → PDO configuration: loads config
- Read transactions → PDO configuration: loads config
- Update transaction → PDO configuration: loads config
- Delete transaction → PDO configuration: loads config
- Create log → PDO configuration: loads config
- Read logs → PDO configuration: loads config
- PDO configuration → MySQL database: queries
- API documentation → PDO configuration: checks token
- API consumer → API documentation: views docs
