Skip to content

yaya5508190/follow-movie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Follow Movie

一个基于微前端架构和插件化系统的电影订阅助手

License Spring Boot Vue Module Federation

📖 项目简介

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 自带)

本地开发

1. 克隆项目

git clone https://github.com/your-org/follow-movie.git
cd follow-movie

2. 安装前端依赖

# 主应用前端
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

3. 构建前端

使用一键构建脚本:

cd script/fronted
node build-all.mjs

4. 配置数据库

编辑 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

5. 启动后端

# 构建项目
mvn clean package -Dmaven.test.skip=true

# 启动主应用
cd follow-movie-web
mvn spring-boot:run

6. 访问应用

打开浏览器访问: http://localhost:8080

默认管理员账号:

  • 用户名: admin
  • 密码: 12345678

Docker 部署

推荐使用 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 ✅ 可用

🛠️ 开发指南

添加新插件

后端插件

  1. plugins/ 目录下创建新的 Maven 模块
  2. 继承父 POM 并添加必要依赖
  3. 实现插件入口类
  4. 打包为独立 JAR

前端插件

  1. 在插件目录下创建 fronted-web 目录
  2. 配置 Module Federation 远程模块
  3. 导出组件和路由
  4. 在主应用中注册远程模块

详细开发文档请参考各插件目录下的 README。

构建脚本

前端一键构建

cd script/fronted
node build-all.mjs

该脚本会自动构建所有前端项目(主应用 + 所有插件)。

Docker 打包

cd script/docker
node build-docker.mjs

自动完成前后端构建、文件收集和 Docker 配置生成。

📚 文档

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

🙏 致谢

感谢以下开源项目:


项目维护者: Follow Movie Team
最后更新: 2025-11-09

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published