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.