Ana içeriğe geç

Mimari

IQVflex, Node-RED içindeki tek dosyalık akışın işlev kaybı olmadan bağımsız bileşenlere ayrılmış hâlidir.

iqvflex/
├── frontend/  (dashboard/)   React + TypeScript + Vite
├── backend/                  Node.js + Express (JavaScript, ES Modules)
└── e2e/                      Uçtan uca testler (Playwright)

Veri akışı

React + TypeScript Frontend
          │
          ▼
     Node.js Backend
       │         │
       │         └────────► Go Integration API (harici)
       │                         │
       │                         ▼
       │                     Yanıt
       │                         │
       ◄─────────────────────────┘
       │
       ▼
    MongoDB

Frontend hiçbir zaman doğrudan MongoDB'ye veya Go servisinin IP/port bilgisine bağlanmaz. Tek bildiği adres VITE_API_BASE_URL ile verilen Node.js backend adresidir. Docker dağıtımında bu değer boş bırakılır ve frontend, backend'e nginx vekili üzerinden aynı köken (origin) üzerinden ulaşır.

Backend katmanları

Route  →  Validation / Middleware  →  Controller  →  Service  →  Repository  →  Model / MongoDB

Go entegrasyonunda:

Route → Controller → Integration Service → Go API → Integration Service → Controller → Frontend
Klasör Sorumluluk
src/routes Yalnızca endpoint tanımı, middleware ve controller bağlama
src/controllers Request alma, service çağırma, HTTP response üretme
src/services İş mantığı; Go API çağrıları goApi.service.js / integration.service.js içinde
src/repositories Tüm MongoDB erişimi (findOne, updateOne, aggregate …)
src/models Veri modelleri, normalizasyon, filtre/doküman üretimi
src/middlewares requestId, auth, notFound, merkezi error
src/validations Request body / query doğrulaması
src/config env.js, database.js, goApi.js — altyapı/yapılandırma

process.env erişimi yalnızca src/config/env.js içindedir; kodun geri kalanı ortam değişkenlerine doğrudan erişmez.

Dizin düzeni (depo kökü)

ERP/
├── install.sh / install.ps1
├── update.sh  / update.ps1
├── uninstall.sh / uninstall.ps1
├── docker-compose.yml          # mongo + backend + frontend
├── docker-compose.prod.yml     # sıkılaştırılmış üretim override'ı
├── .env.example                # şablon (gerçek secret içermez)
├── VERSION                     # canonical sürüm
├── scripts/
│   ├── common.sh / common.ps1  # ortak fonksiyonlar
│   └── static-server.mjs       # native kip statik sunucu
├── dashboard/                  # frontend + Dockerfile + nginx.conf
├── iqvflex/backend/            # backend + Dockerfile
├── iqvflex/e2e/                # uçtan uca testler
├── docs/                       # bu dokümantasyon (MkDocs)
└── .github/workflows/          # CI/CD pipeline'ları

Kod ile çalışma zamanı verisi ayrıdır: data/, logs/, backups/ ve .env sürüm kontrolüne girmez.

Sürümleme

Tek canonical sürüm kaynağı depo kökündeki VERSION dosyasıdır (SemVer, MAJOR.MINOR.PATCH). Betikler sürümü yalnızca bu dosyadan okur ve Docker imajlarını bu etiketle işaretler. dashboard/package.json ve iqvflex/backend/package.json içindeki sürümler bileşen düzeyindedir ve ürün sürümü değildir.