Giao diện
Tổng quan hệ thống
1) Digiforce là gì
Digiforce là nền tảng low-code / no-code xây dựng ứng dụng doanh nghiệp. Toàn bộ tính năng nghiệp vụ (workflow, quản lý dữ liệu, biểu mẫu, dashboard, tích hợp…) đều được cung cấp dưới dạng plugin - core chỉ lo pipeline HTTP, quản lý dữ liệu, phân quyền và lifecycle.
| Mục tiêu | Cách đạt được |
|---|---|
| Mở rộng không fork core | Mọi feature ship dưới dạng plugin; core chỉ expose contract (hook, manager, middleware). |
| Metadata-driven | Collection, field, UI schema, action khai báo runtime thay vì hardcode. |
| Đa data source | DataSourceManager trừu tượng hoá nguồn dữ liệu; request pipeline nhất quán bất kể backend. |
| Bảo mật xuyên suốt | Request API qua resource pipeline: AuthManager → ACL trước khi handler dùng Repository. |
| Quan sát được | Logger, request ID, telemetry, SQL logger - truy vết toàn bộ lifecycle. |
2) System context - ai tương tác với hệ thống
| Thành phần | Vai trò |
|---|---|
| User / Admin | Sử dụng giao diện SPA để thao tác dữ liệu, cấu hình hệ thống, quản lý plugin. |
| Developer | Phát triển plugin (server + client), chạy CLI (install, upgrade, dev). |
| Hệ thống ngoài | Gọi API hoặc nhận webhook, tích hợp SSO/OAuth. |
| Client SPA | Ứng dụng React, render UI Schema, giao tiếp server qua REST + WebSocket. |
| Server | Node.js / Koa, xử lý request, quản lý plugin lifecycle, pipeline dữ liệu. |
| Database | Lưu trữ chính (PostgreSQL, MySQL hoặc SQLite cho dev). |
| Cache / PubSub | Redis - cache, pub/sub giữa các instance, lock phân tán. |
| File Storage | Local disk hoặc object storage (S3, MinIO…) cho file upload. |
3) Container view - bên trong platform
Hai runtime hoàn toàn tách biệt, giao tiếp qua HTTP API và WebSocket:
- Server là ứng dụng Koa mở rộng, quản lý toàn bộ dữ liệu, bảo mật và plugin server-side.
- Client là SPA React, tải plugin client (static + remote) và render UI dựa trên Schema.
4) Bản đồ package (monorepo)
| Nhóm | Package tiêu biểu | Vai trò |
|---|---|---|
| Core - runtime | server, client | Hai Application chính (server Koa, client React). |
| Core - data | database, data-source-manager, resourcer, actions | ORM, quản lý data source, resource/action pipeline. |
| Core - security | acl, auth | Engine phân quyền và xác thực. |
| Core - infra | cache, logger, telemetry, utils | Cache, log, quan sát, tiện ích chung. |
| Core - tooling | build, cli, sdk, test, create-digiforce-nc-app | Build, CLI, scaffold, test. |
| Plugins | plugin-acl, plugin-workflow, plugin-action-*, plugin-block-* | Tính năng nghiệp vụ, UI block, tích hợp. |
5) Nguyên tắc thiết kế xuyên suốt
Mở rộng qua plugin
Core (pipeline, manager, engine) expose contract (hook, event, middleware slot). Plugin đăng ký vào contract, không sửa core. Chi tiết: Plugin architecture.
Middleware có thứ tự rõ ràng
Tất cả middleware (server Koa, resource pipeline, data source) đều dùng Toposort với tag before / after. Plugin khai báo vị trí tương đối thay vì hard-index.
Metadata-driven
Collection / Field / UI Schema khai báo bằng JSON, lưu trong database và đọc runtime. Thay đổi cấu trúc dữ liệu hoặc giao diện không cần build lại code. Chi tiết: Data model & metadata.
Backward compatibility
API cũ được giữ lại qua deprecation path. Migration tự động khi upgrade - core migration chạy trước, plugin migration chạy sau.
Quan sát hệ thống
Logger (app, request, SQL), Telemetry (hook vào lifecycle và request), Audit (sự kiện thay đổi quan trọng).
6) Deployment điển hình
| Thành phần | Ghi chú |
|---|---|
| Load Balancer | Phân tải HTTP + WebSocket; sticky session cho WS nếu cần. |
| Instance | Mỗi instance chạy server Node.js + phục vụ client build (static). Có thể scale horizontal. |
| PostgreSQL | Database chính; MySQL cũng hỗ trợ. SQLite cho dev/test. |
| Redis | Bắt buộc khi multi-instance - cache, pub/sub đồng bộ trạng thái, distributed lock. |
| Object Storage | File upload; local disk (single instance) hoặc S3/MinIO (production). |
Khi chạy nhiều instance, PubSubManager + SyncMessageManager qua Redis đảm bảo đồng bộ trạng thái plugin, cache invalidation và lock.
Đọc tiếp
- Server architecture - Koa app, middleware stack, resource pipeline.
- Client architecture - React SPA, managers, provider chain.
- Data model & metadata - Collection, Field, UI Schema.
- Plugin architecture - mô hình plugin, lifecycle, extension points.
- Security model - Auth + ACL.
- Request lifecycle - end-to-end flows, debug checklist.