跳至主要内容

系統架構

花店管理系統採用前後端分離架構,基於 AppFuse 快速開發框架建構,採用 Prototype → 生產實作 的漸進式開發流程。

整體架構

模組關係

模組類型說明API 模式
app-web-mockupPrototype需求確認、UI/UX 設計驗證Mock API (MSW)
app-web生產前端React SPA 生產實作Mock → 真實 API 漸進切換
app-server生產後端RESTful API + 資料庫真實 API
app-web-host托管層將 SPA 與 Spring Boot 整合打包N/A
app-docs文檔站Docusaurus 應用文檔N/A
app-docs-host托管層將文檔站與 Spring Boot 整合打包N/A

技術棧

後端 (app-server)

層級技術
FrameworkSpring Boot 3.x
SecuritySpring Security + JWT
ORMSpring Data JPA + Hibernate
DatabaseH2(開發預設)/ MySQL 8.0+ / PostgreSQL 15+ / SQL Server 2012+
API DocsSpring REST Docs
BuildGradle (Kotlin DSL)

前端 (app-web, app-web-mockup)

層級技術
FrameworkReact 19 + TypeScript
StateRedux Toolkit
RoutingReact Router
UITailwind CSS + AppFuse Components
MockMSW (Mock Service Worker)
BuildVite

托管層 (app-web-host, app-docs-host)

層級技術
FrameworkSpring Boot 3.x
功能SPA 路由轉發、CSP nonce 注入、安全 Headers
部署WAR(整合靜態資源)

模組結構

app-server

app-server/
├── src/main/java/
│ └── io/leandev/app/
│ ├── config/ # 配置類
│ ├── controller/ # REST API 層
│ ├── dto/ # 資料傳輸物件
│ ├── entity/ # JPA 實體
│ │ ├── customer/ # 客戶
│ │ ├── order/ # 訂單
│ │ └── sales/ # 產品
│ ├── repository/ # 資料存取層
│ ├── service/ # 業務邏輯層
│ └── security/ # 安全相關
└── src/test/

app-web / app-web-mockup

兩者結構相同,app-web-mockup 作為設計指引,app-web 從其同步程式碼:

app-web/
├── src/
│ ├── applets/ # 業務功能模組
│ │ ├── customer/
│ │ ├── order/
│ │ └── product/
│ ├── components/ # 應用程式組件
│ ├── features/ # Redux slices
│ ├── layouts/ # 佈局組件
│ ├── mocks/ # MSW handlers
│ ├── services/ # API 服務層
│ └── routes/ # 路由配置
└── tests/

app-web-host

app-web-host/
├── src/main/java/
│ └── io/leandev/florist/host/
│ ├── config/ # 安全配置(CSP、HSTS)
│ └── controller/ # SPA 路由轉發
├── src/main/resources/
│ └── static/ # app-web build 輸出
└── build.gradle.kts

框架依賴

本專案使用 AppFuse 框架提供的基礎設施:

┌─────────────────────────────────────────────────────────────┐
│ AppFuse Framework (框架層) │
├─────────────────────────────────────────────────────────────┤
│ appfuse-server Spring Boot 工具集 │
│ - HTTP Client、CSV 處理、檔案存儲 │
│ - Security utilities、Audit logging │
├─────────────────────────────────────────────────────────────┤
│ appfuse-web React 組件庫 │
│ - 表單、表格、佈局組件 │
│ - Application Shell、i18n │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ 花店管理系統 (參考實作) │
├─────────────────────────────────────────────────────────────┤
│ app-web-mockup ──→ app-web ←──→ app-server │
│ (Prototype) (SPA) (API) │
└─────────────────────────────────────────────────────────────┘

框架引用方式

模組引用方式
app-web-mockupnpm 安裝編譯後的 @appfuse/appfuse-web
app-webnpm 安裝編譯後的 @appfuse/appfuse-web
app-serverGradle 依賴編譯後的 @appfuse/appfuse-server

詳細框架文檔請參閱 AppFuse 框架文檔

開發流程

  1. Prototype 階段:在 app-web-mockup 使用 Mock API 快速驗證需求
  2. 前端實作:從 mockup 同步程式碼到 app-web,初期使用 Mock API
  3. 後端實作:在 app-server 實作 RESTful API
  4. 漸進切換:app-web 逐步從 Mock API 切換到真實 API
  5. 整合打包:透過 app-web-host 將 SPA 與 Spring Boot 整合

相關資源