apps/flutter_appFlutter runner và bootstrap mỏng.
Dự án kỹ thuật tiêu biểu · 2026
Dự án kỹ thuật cá nhân / Kiến trúc nền tảng
Thiết kế nền tảng Super App Flutter chạy các mini-app H5 trong môi trường WebView được kiểm soát, với capability-based bridge, security boundary, signed manifest, SDK/contract sinh tự động và backend NestJS.
Mục lục case study
Mô hình mini-app có thể tăng tốc delivery, nhưng chỉ khi host vẫn là điểm thực thi policy. Dự án này giải quyết cách các trải nghiệm H5 được phát triển độc lập có thể dùng chung identity, payment, device service và navigation mà không nhận quyền native không giới hạn.
Host làm chủ policy. Mini-app chỉ yêu cầu capability với scope hẹp.
Nền tảng tách thin runner, product host, runtime policy model, lớp Flutter WebView, SDK, generated client và backend service. Mỗi boundary có trách nhiệm và contract rõ ràng.
Clean Architecture · BLoC · go_router · get_it / injectable · modular feature boundaries · Android/iOS native glue
Networking · local storage · secure storage · domain · analytics
apps/flutter_appFlutter runner và bootstrap mỏng.
packages/superapp_hostApplication code và product feature chính.
packages/miniapp_runtimeDescriptor, session, policy, registry, lifecycle và authorization scope.
packages/miniapp_flutterLớp Flutter WebView hosting.
packages/superapp_sdkBridge SDK phía Dart.
packages/superapp_api_clientOpenAPI client được sinh tự động.
backend/Platform service và domain module NestJS.
mini_apps_store/ + contracts/H5 hosting, JavaScript SDK, registry và contract workflow.
Runtime mô hình hóa descriptor, session, policy, capability registry, lifecycle, authorization scope, bundle version, cache và revocation. Launch là một quyết định qua gate, không phải thao tác mở URL trực tiếp.
H5 được xem là nguồn input không tin cậy. Mini-app có thể yêu cầu capability nhưng không thể trực tiếp chạm vào payment credential, platform secret hoặc device API không giới hạn. Flutter host xác thực session, đánh giá policy và chỉ chuyển tác vụ hợp lệ tới native service hoặc backend.
Mọi bridge message đều đi qua pipeline validation và authorization tường minh trước khi một host capability được thực thi.
CAPABILITIESUser · Payment · Device · Storage · Share · Navigation
Security control được đặt tại các boundary nơi nội dung H5 không tin cậy gặp capability có đặc quyền của mobile và backend.
Giới hạn origin của bridge và thực thi main-frame/origin boundary trước dispatch.
Xác minh chữ ký Ed25519/JWKS; mobile host không giữ signing private key.
Authentication material nhạy cảm dùng storage dựa trên Keychain/Keystore.
WebView → native host → backend → provider. Credential nằm ngoài H5; call server-to-server dùng service-token boundary.
Deep link superapp://miniapp/<id> và QR launch phải qua registry, policy và version gate.
Client kill-switch bổ sung cho cơ chế revocation phía backend.
OpenAPI là source of truth dùng chung để sinh Dart và TypeScript client. Contract CI kiểm tra breaking change để mobile host, mini-app developer và backend phát triển trên interface tường minh thay vì giả định API không chính thức.
Nền tảng NestJS gồm auth, OAuth, identity, organization, mini-app, payment, analytics, revocation và user. Artifact pipeline bổ sung digest verification, quarantine, fail-closed scanning, release ledger append-only, rollback và phòng vệ ZIP/bundle.
Checkpoint tích hợp Gate 3 gần nhất đạt 1.166 / 1.166 test trên Flutter/Dart và backend, với năm workflow xanh. Độ chín tích hợp đã được kiểm chứng; production readiness vẫn qua các review còn lại.
Nền tảng chủ động giữ gate trước production. Các hạng mục còn lại được thể hiện như điều kiện release rõ ràng, không phải rủi ro bị che giấu.
Independent security review chưa đóng hoàn toàn.
Baseline reconciliation còn dependency bên ngoài đang chờ.
Production flags tiếp tục bị vô hiệu hóa.
Chưa có quyết định GO production cuối cùng.
Kiến trúc thể hiện rõ chi phí thay vì coi mọi control là miễn phí.
H5 cho phép delivery độc lập; capability mediation chủ động giới hạn quyền của mini-app.
Generated client và breaking-change check tăng quy trình nhưng giảm drift giữa host, mini-app và backend.
Chặn launch tốt hơn bỏ qua manifest, policy hoặc artifact state không thể xác minh.
Bridge tăng công việc lifecycle và observability nhưng giữ privileged action trong trust boundary của mobile.