# a4iko/family-teknik architecture

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

- Interactive diagram: https://gitdiagram.com/a4iko/family-teknik
- Repository: https://github.com/a4iko/family-teknik

## Overview

Family Teknik is a vehicle-service backend with customer, vehicle, service, and transaction CRUD, plus an RFM analysis and promotion-recommendation flow. The RFM route reads transactions, sends them to a Python service, and returns its analysis. A legacy browser script fetches the customer list; the React app shown is a starter screen and is not evidenced as connected to the backend. The map reflects sampled code and README notes; unsampled route details are not inferred.

Main entry points: [`backend/db.js`](https://github.com/a4iko/family-teknik/blob/master/backend/db.js) (CRUD connection), [`AI/app.py`](https://github.com/a4iko/family-teknik/blob/master/AI/app.py) (Python service), [`backend/server.js`](https://github.com/a4iko/family-teknik/blob/master/backend/server.js) (RFM endpoint), [`frontend/js/script.js`](https://github.com/a4iko/family-teknik/blob/master/frontend/js/script.js) (Customer list UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Backend API"]
  node_legacy_ui["Customer list UI<br/>[script.js]"]
  node_server["API routes<br/>[server.js]"]
  node_customer["Customer CRUD<br/>[server.js]"]
  node_vehicle["Vehicle CRUD<br/>[server.js]"]
  node_service["Service CRUD<br/>[server.js]"]
  node_transactions["Transaction CRUD<br/>[server.js]"]
  node_rfm_route["RFM endpoint<br/>[server.js]"]
end

subgraph group_data["Data Access"]
  node_crud_db["CRUD connection<br/>[db.js]"]
  node_rfm_db["RFM pool<br/>[db_rfm.js]"]
  node_mysql[("MySQL database")]
end

subgraph group_analysis["RFM Analysis"]
  node_python_service["Python service<br/>[app.py]"]
  node_rfm_calc["RFM calculation<br/>[rfm.py]"]
  node_segmentation["Customer segments<br/>[recomendation.py]"]
  node_promo["Promo recommendation<br/>[recomendation.py]"]
end

node_browser(("Browser user"))

node_browser -->|"views"| node_legacy_ui
node_legacy_ui -->|"fetches customers"| node_server
node_server -->|"uses CRUD queries"| node_crud_db
node_customer -->|"queries"| node_crud_db
node_vehicle -->|"queries"| node_crud_db
node_service -->|"queries"| node_crud_db
node_transactions -->|"queries"| node_crud_db
node_crud_db -->|"connects"| node_mysql
node_rfm_route -->|"reads transactions"| node_rfm_db
node_rfm_db -->|"connects"| node_mysql
node_rfm_route -->|"posts transactions"| node_python_service
node_python_service -->|"calculates RFM"| node_rfm_calc
node_python_service -->|"determines segment"| node_segmentation
node_python_service -->|"gets recommendation"| node_promo

click node_legacy_ui "https://github.com/a4iko/family-teknik/blob/master/frontend/js/script.js"
click node_server "https://github.com/a4iko/family-teknik/blob/master/backend/server.js"
click node_customer "https://github.com/a4iko/family-teknik/blob/master/backend/server.js"
click node_vehicle "https://github.com/a4iko/family-teknik/blob/master/backend/server.js"
click node_service "https://github.com/a4iko/family-teknik/blob/master/backend/server.js"
click node_transactions "https://github.com/a4iko/family-teknik/blob/master/backend/server.js"
click node_rfm_route "https://github.com/a4iko/family-teknik/blob/master/backend/server.js"
click node_crud_db "https://github.com/a4iko/family-teknik/blob/master/backend/db.js"
click node_rfm_db "https://github.com/a4iko/family-teknik/blob/master/backend/db_rfm.js"
click node_python_service "https://github.com/a4iko/family-teknik/blob/master/AI/app.py"
click node_rfm_calc "https://github.com/a4iko/family-teknik/blob/master/AI/rfm.py"
click node_segmentation "https://github.com/a4iko/family-teknik/blob/master/AI/recomendation.py"
click node_promo "https://github.com/a4iko/family-teknik/blob/master/AI/recomendation.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_legacy_ui,node_server,node_customer,node_vehicle,node_service,node_transactions,node_rfm_route,node_browser toneBlue
class node_crud_db,node_rfm_db,node_mysql toneAmber
class node_python_service,node_rfm_calc,node_segmentation,node_promo toneMint
```

## Components

### Backend API

- [Customer list UI](https://github.com/a4iko/family-teknik/blob/master/frontend/js/script.js): `frontend/js/script.js`
- [API routes](https://github.com/a4iko/family-teknik/blob/master/backend/server.js): `backend/server.js`
- [Customer CRUD](https://github.com/a4iko/family-teknik/blob/master/backend/server.js): `backend/server.js`
- [Vehicle CRUD](https://github.com/a4iko/family-teknik/blob/master/backend/server.js): `backend/server.js`
- [Service CRUD](https://github.com/a4iko/family-teknik/blob/master/backend/server.js): `backend/server.js`
- [Transaction CRUD](https://github.com/a4iko/family-teknik/blob/master/backend/server.js): `backend/server.js`
- [RFM endpoint](https://github.com/a4iko/family-teknik/blob/master/backend/server.js): `backend/server.js`

### Data Access

- [CRUD connection](https://github.com/a4iko/family-teknik/blob/master/backend/db.js): `backend/db.js`
- [RFM pool](https://github.com/a4iko/family-teknik/blob/master/backend/db_rfm.js): `backend/db_rfm.js`
- **MySQL database**

### RFM Analysis

- [Python service](https://github.com/a4iko/family-teknik/blob/master/AI/app.py): `AI/app.py`
- [RFM calculation](https://github.com/a4iko/family-teknik/blob/master/AI/rfm.py): `AI/rfm.py`
- [Customer segments](https://github.com/a4iko/family-teknik/blob/master/AI/recomendation.py): `AI/recomendation.py`
- [Promo recommendation](https://github.com/a4iko/family-teknik/blob/master/AI/recomendation.py): `AI/recomendation.py`

### Other components

- **Browser user**

## Connections

- Browser user → Customer list UI: views (evidence: `frontend/js/script.js`)
- Customer list UI → API routes: fetches customers (evidence: `frontend/js/script.js`)
- API routes → CRUD connection: uses CRUD queries (evidence: `backend/server.js`)
- Customer CRUD → CRUD connection: queries (evidence: `backend/server.js`)
- Vehicle CRUD → CRUD connection: queries (evidence: `backend/server.js`)
- Service CRUD → CRUD connection: queries (evidence: `backend/server.js`)
- Transaction CRUD → CRUD connection: queries (evidence: `backend/server.js`)
- CRUD connection → MySQL database: connects (evidence: `backend/db.js`)
- RFM endpoint → RFM pool: reads transactions (evidence: `backend/server.js`)
- RFM pool → MySQL database: connects (evidence: `backend/db_rfm.js`)
- RFM endpoint → Python service: posts transactions (evidence: `backend/server.js`)
- Python service → RFM calculation: calculates RFM (evidence: `AI/app.py`)
- Python service → Customer segments: determines segment (evidence: `AI/app.py`)
- Python service → Promo recommendation: gets recommendation (evidence: `AI/app.py`)
