一个基于微前端架构和插件化系统的电影订阅助手
Follow Movie 是一个现代化的电影订阅助手系统,采用插件化架构和微前端技术栈,支持灵活的功能扩展和独立部署。系统集成了多个下载站点、BT 下载工具和媒体管理功能,为用户提供一站式的影视资源订阅和管理服务。
- 🧩 插件化架构 - 基于 Spring Boot 的动态插件系统,支持插件热加载和独立开发
- 🚀 微前端架构 - 采用 Module Federation 技术实现前端模块联邦,各插件前端独立打包部署
- 🎨 现代化 UI - 基于 Vue 3 + Vuetify 3 的响应式界面设计
- 🔐 额外认证 - 支持通过极空间远程访问功能操作QBittorrent下载工具
- 📦 容器化部署 - 完整的 Docker 化部署方案,一键启动
- 🗄️ 数据持久化 - 基于 PostgreSQL 和 Jimmer ORM 的数据管理
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 17 | 核心开发语言 |
| Spring Boot | 3.5.5 | 应用框架 |
| Jimmer | 0.9.111 | ORM 框架 |
| PostgreSQL | 15 | 关系型数据库 |
| Maven | 3.6+ | 构建工具 |
| OkHttp | 4.12.0 | HTTP 客户端 |
| 技术 | 版本 | 说明 |
|---|---|---|
| Vue | 3.5.17 | 渐进式框架 |
| Vuetify | 3.9.1 | Material Design 组件库 |
| Vite | 5.x | 构建工具 |
| TypeScript | 5.6+ | 类型支持 |
| Pinia | 3.0.3 | 状态管理 |
| Module Federation | 0.21.3 | 微前端框架 |
| Axios | 1.7.9 | HTTP 客户端 |
项目采用 Module Federation 实现微前端架构:
┌─────────────────────────────────────────┐
│ Host Application │
│ (follow-movie-web) │
│ │
│ ┌──────────────────────────────────┐ │
│ │ Module Federation Runtime │ │
│ └──────────────────────────────────┘ │
└─────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Plugin │ │ Plugin │ │ Plugin │
│ Remote │ │ Remote │ │ Remote │
└──────────┘ └──────────┘ └──────────┘
优势:
- ✅ 各插件前端独立开发、构建和部署
- ✅ 运行时动态加载插件模块
- ✅ 共享依赖自动优化
- ✅ 支持版本独立升级
后端采用 Spring Boot 插件化架构:
┌─────────────────────────────────────────┐
│ Main Application │
│ (follow-movie-web) │
│ │
│ ┌────────────────────────────────────┐ │
│ │ Plugin Loader & Scanner │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Media │ │ Media │ │ Pre │
│ Download│ │ Fetch │ │ Auth │
└──────────┘ └──────────┘ └──────────┘
特点:
- ✅ 插件独立 JAR 包
- ✅ 运行时动态加载
- ✅ 独立的依赖管理
- ✅ 统一的生命周期管理
follow-movie/
├── common-api/ # 公共 API 模块
├── common-repository/ # 公共数据访问层
│ └── src/main/resources/sql/ # 数据库初始化脚本
├── follow-movie-web/ # 主应用
│ ├── fronted-web/ # 主应用前端(Host)
│ └── src/main/java/ # 主应用后端
├── plugins/ # 插件目录
│ ├── media-download/ # 媒体下载插件
│ │ └── q-bittorrent/ # qBittorrent 集成
│ ├── media-fetch/ # 媒体抓取插件
│ │ └── m-team/ # M-Team 站点集成
│ ├── media-hub/ # 媒体中心插件
│ └── pre-auth/ # 预认证插件
│ └── z-space/ # Z-Space 认证
└── script/ # 构建和部署脚本
├── fronted/ # 前端构建脚本
│ └── build-all.mjs # 一键构建所有前端
└── docker/ # Docker 部署脚本
├── build-docker.mjs # Docker 打包脚本
├── test-build.mjs # 构建检查工具
└── DEPLOYMENT_GUIDE.md # 部署完整指南
- Node.js >= 16.x
- Java JDK >= 17
- Maven >= 3.6.x
- Docker >= 20.x(可选,用于容器化部署)
- PostgreSQL >= 15(或使用 Docker Compose 自带)
git clone https://github.com/your-org/follow-movie.git
cd follow-movie# 主应用前端
cd follow-movie-web/fronted-web
npm install
# 各插件前端
cd plugins/media-hub/fronted-web
npm install
cd plugins/media-download/q-bittorrent/fronted-web
npm install
cd plugins/media-fetch/m-team/fronted-web
npm install
cd plugins/pre-auth/z-space/fronted-web
npm install使用一键构建脚本:
cd script/fronted
node build-all.mjs编辑 follow-movie-web/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/follow_movie
username: postgres
password: your_password执行数据库初始化脚本:
psql -U postgres -d follow_movie -f common-repository/src/main/resources/sql/0.0.1.sql# 构建项目
mvn clean package -Dmaven.test.skip=true
# 启动主应用
cd follow-movie-web
mvn spring-boot:run打开浏览器访问: http://localhost:8080
默认管理员账号:
- 用户名:
admin - 密码:
12345678
推荐使用 Docker Compose 进行一键部署,详见 Docker 部署指南。
# 1. 执行 Docker 打包
cd script/docker
node build-docker.mjs
# 2. 构建并启动
cd dist
docker build -t follow-movie:latest .
docker-compose up -d
# 3. 访问应用
# http://localhost:8080完整部署说明请查看:📖 Docker 部署完整指南
| 插件 | 功能 | 状态 |
|---|---|---|
| q-bittorrent | qBittorrent 下载工具集成,支持种子管理和下载控制 | ✅ 可用 |
| 插件 | 功能 | 状态 |
|---|---|---|
| m-team | M-Team PT 站点集成,支持资源搜索和订阅 | ✅ 可用 |
| 插件 | 功能 | 状态 |
|---|---|---|
| media-hub | 豆瓣热门电影,不知道想看什么的时候翻一翻 | ✅ 可用 |
| 插件 | 功能 | 状态 |
|---|---|---|
| z-space | Z-Space 极空间认证,支持连接到极空间中的QB | ✅ 可用 |
- 在
plugins/目录下创建新的 Maven 模块 - 继承父 POM 并添加必要依赖
- 实现插件入口类
- 打包为独立 JAR
- 在插件目录下创建
fronted-web目录 - 配置 Module Federation 远程模块
- 导出组件和路由
- 在主应用中注册远程模块
详细开发文档请参考各插件目录下的 README。
cd script/fronted
node build-all.mjs该脚本会自动构建所有前端项目(主应用 + 所有插件)。
cd script/docker
node build-docker.mjs自动完成前后端构建、文件收集和 Docker 配置生成。
欢迎提交 Issue 和 Pull Request!
本项目采用 MIT 许可证。详见 LICENSE 文件。
感谢以下开源项目:
项目维护者: Follow Movie Team
最后更新: 2025-11-09