# YBox
**Repository Path**: yiyeo/ybox
## Basic Information
- **Project Name**: YBox
- **Description**: 本作品名为《YBOX—聚合收藏平台》,顾名思义,本产品是一款聚合收藏平台,他能够收藏来自各大平台(微信、知乎、掘金、CSDN)的网页、图片、音视频等 ;并且提供文章分类保存、下载至本地(html、md、pdf...)。除此之外也包括个人文案编写、记录学习笔记、撰写博客文档等功能。该应用系统采用了前后端分离的设计思路,前端采用了Vue.js框架.后端采用了Spring Boot,框架.
- **Primary Language**: Java
- **License**: WTFPL
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2024-01-12
- **Last Updated**: 2024-01-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
YBox v1.0.0
基于 Vue3/Element UI/Vant 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构
## 平台简介
YBox是一个现代化书签收藏夹,帮助你高效收藏并管理有价值的网络信息。
YBox 专为新时代数字工作者打造,是你的私人网络信息助手。我们会时常在网络上浏览新闻、文章、资料、视频等内容,当你发现了自己在意的信息后,可以通过 YBox 提供的快捷收藏工具,将他们快速保存。在之后工作和生活中,当你需要它们时,能够随时在 YBox 中浏览或搜索,不必担心遗忘。
## 功能特点
* 轻简设计,强大能力 – YBox 专为网络书签功能打造,直观而纯粹,可全方位满足收藏、阅读、管理、搜索等需求。
* 随处皆可收藏 – 碎片资讯随时随地保存到 YBox,让你可以专注于学习和创造,不需要花费精力记忆它们。
* 告别繁琐整理 – 只需简单地设置好规则, YBox 会帮你自动分类,方便你按照类别统一浏览和处理。
* 无干扰阅读 – 自动识别是否是文章,预先提取正文并缓存,提供最佳的文章阅读体验。
* 随时找到所需 – 多种系统级全局搜索入口,使用快捷键随时搜索并打开要用的书签。
* 愉悦体验 – 不同于其它跨平台书签服务,YBox 使用原生技术开发,确保真正高效的使用体验。
* 轻松创建工作流 – 灵活的管理工具,轻松搭建你的网络导航。
## 使用场景
* 各行业专业工作者收集资料,为自己的工作项目提供素材和参考;
* 设计师随时收藏看到的优秀案例,组建自己的灵感库,在工作中随时找回灵感;
* 程序开发者收藏项目难题的解决方案,当之后再遇到类似问题可以从容不迫;
* 学生收藏学习资料,借助互联网的海量信息提高自己的学习效率;
* 收藏有价值的文章,定期回顾,养成深度阅读的习惯,提升自己;
* 记录在网络上看到的有趣视频、社交动态等,等方便或有空闲时再仔细浏览;
## 系统模块
~~~
com.ybox
├── ybox-ui // 前端框架 [80]
│ └── ybox-ui-mobile // app
│ └── ybox-ui-vue3 // 管理后台
├── ybox-gateway // 网关模块 [8080]
├── ybox-auth // 认证中心 [9200]
├── ybox-api // 接口模块
│ └── ybox-api-app // app接口
│ └── ybox-api-crawler // 爬虫接口
│ └── ybox-api-system // 系统接口
├── ybox-common // 通用模块
│ └── ybox-common-core // 核心模块
│ └── ybox-common-datascope // 权限范围
│ └── ybox-common-datasource // 多数据源
│ └── ybox-common-email // 邮件服务
│ └── ybox-common-log // 日志记录
│ └── ybox-common-redis // 缓存服务
│ └── ybox-common-seata // 分布式事务
│ └── ybox-common-security // 安全模块
│ └── ybox-common-swagger // 系统接口
├── ybox-modules // 业务模块
│ └── ybox-system // 系统模块 [9201]
│ └── ybox-gen // 代码生成 [9202]
│ └── ybox-job // 定时任务 [9203]
│ └── ybox-app // app模块 [9204]
│ └── ybox-crawler // 爬虫模块 [9205]
│ └── ybox-file // 文件服务 [9300]
├── ybox-visual // 图形化管理模块
│ └── ybox-visual-monitor // 监控中心 [9100]
├──pom.xml // 公共依赖
~~~
## 服务架构于安全
* 采用前后端分离的模式,微服务版本前端(基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue))。
* 后端采用Spring Boot、Spring Cloud & Alibaba。
* 注册中心、配置中心选型Nacos,权限认证使用Redis。
* 流量控制框架选型Sentinel,分布式事务选型Seata。
* 完全响应式布局(支持电脑、平板、手机等主流设备)
* 强大的爬虫功能,可以获取用户收藏的网络资源
* 支持多数据源,简单配置即可实现切换。
* 支持按钮及数据权限,可自定义部门数据权限。
* 对常用js插件进行二次封装,使js代码变得简洁,更加易维护
* 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
* api签名校验,接口安全性高。
## 架构图
## 内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3. 岗位管理:配置系统用户所属担任职务。
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. 参数管理:对系统动态配置常用参数。
8. 通知公告:系统通知公告信息发布维护。
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. 登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
14. 系统接口:根据业务代码自动生成相关的api接口文档。
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16. 在线构建器:拖动表单元素生成相应的HTML代码。
17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
## 在线体验
- 后台试用账号:admin/admin123
- app试用账号: 1655495937@qq.com/Aa@123456
- 由于本平台采用微服务架构,对服务器内存要求过高,本人无法承担高额服务器费用,故采用内网穿透方式,
演示地址:http://ybox.com
文档地址:http://ybox.com
## 使用项目
### 测试环境启动
1. 导入sql
```bash
mysql -h localhost -u root -p ybox-cloud < ./sql/ybox-cloud.sql
```
2. 导入nacos配置
```bash
mysql -h localhost -u root -p ybox-nacos-config < ./sql/ybox-nacos-config.sql
```
3. 打开Ybox项目,启动所有ybox-modules目录下的模块,他们分别是ybox-modules-app、ybox-modules-crawler、ybox-modules-file、ybox-modules-gen、ybox-modules-job、ybox-modules-system以及YBox目录下的ybox-auth、ybox-gateway模块
其中ybox-modules-app、ybox-modules-crawler、ybox-modules-file、ybox-modules-system、ybox-auth、ybox-gateway必启,否则报错。

4. 打开YBox下的ybox-ui中的ybox-ui-mobile,在cmd中输入下面指令启动app项目
~~~bash
npm run dev
~~~
5. 打开YBox下的ybox-ui中的ybox-ui-vue3,在cmd中输入下面指令启动后台管理项目
~~~bash
npm run dev
~~~
### 生产环境启动
1. 依次点击maven中的clean、compile、package、install
2. 依次找到[必须启动的modules](#startModules),找到target目录中的jar包,统一放到桌面
3. 执行
~~~bash
java -jar jar包名称
~~~
4. 将ybox-ui中的两个项目打包,
~~~bash
vite build
ybox-ui-mobile执行:
npm run build
ybox-ui-vue3执行:
npm run build:prod
~~~
5. 将打包后的文件上传到服务器,并使用用nginx代理,ybox-ui-mobile端口为80端口,ybox-ui-vue3端口为81端口.
## 后台演示图
## app端
# captcha
## 效果展示
5.2.验证码字符类型
| 类型 | 描述 |
|:-------------------|:--------|
| TYPE_DEFAULT | 数字和字母混合 |
| TYPE_ONLY_NUMBER | 纯数字 |
| TYPE_ONLY_CHAR | 纯字母 |
| TYPE_ONLY_UPPER | 纯大写字母 |
| TYPE_ONLY_LOWER | 纯小写字母 |
| TYPE_NUM_AND_UPPER | 数字和大写字母 |
### 5.3.字体设置
内置字体:
| 字体 | 效果 |
|:----------------|:-----------------------------------------------|
| Captcha.FONT_1 |  |
| Captcha.FONT_2 |  |
| Captcha.FONT_3 |  |
| Captcha.FONT_4 |  |
| Captcha.FONT_5 |  |
| Captcha.FONT_6 |  |
| Captcha.FONT_7 |  |
| Captcha.FONT_8 |  |
| Captcha.FONT_9 |  |
| Captcha.FONT_10 |  |
使用方法:
```
SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);
// 设置内置字体
captcha.setFont(Captcha.FONT_1);
// 设置系统字体
captcha.setFont(new Font("楷体", Font.PLAIN, 28));
```
### 5.4.输出base64编码
```
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
specCaptcha.toBase64();
// 如果不想要base64的头部data:image/png;base64,
specCaptcha.toBase64(""); // 加一个空的参数即可
```
### 5.5.输出到文件
```
FileOutputStream outputStream = new FileOutputStream(new File("C:/captcha.png"))
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
specCaptcha.out(outputStream);
```
# banner图
- banner转换网址 https://www.bootschool.net/ascii
- 3d格式