基于 Spring Boot + React 的现代化论坛 CMS 系统
次元栈 一个个人练手项目 ps:不要抱太大希望
平台核心功能:
- 📝 文章发布与内容管理(CMS)
- 💬 用户互动:评论、点赞、收藏
- 🔖 标签分类:支持跨圈层内容组织
- 👥 用户系统:注册、登录、个人主页、权限管理、文章发布管理系统、RBAC权限管理......
- 🔍 内容搜索与推荐
- 📱 响应式前端,支持移动端浏览
- 📦 支持首页、文章页服务端渲染
| 层级 | 技术选型 |
|---|---|
| 后端 | Java 17, Spring Boot 3.5, Mybatis, MySQL, Redis, Cookie |
| 前端 | React 19, JavaScript, Vite, Axios, Tailwind CSS |
| 构建 | Maven (后端), npm/pnpm (前端) |
| 部署 | Docker, Nginx, Linux, Windows |
环境要求(给出版本为可用版本,其他版本请自行测试)
OpenJDK版本:17+
Redis版本:5+
mysql版本:8+
解压下载的压缩包
然后进入到目录下执行命令:
java -jar dimstack-1.0-SNAPSHOT.jar运行后找到终端输出的地址(端口号是随机的)在浏览器打开
按照向导的提示填写信息(默认信息不懂的话不要动)
填写完后点击确认,出现下面界面即为成功,重启即可
环境要求(给出版本为可用版本,其他版本请自行测试)
OpenJDK版本:17+
Redis版本:5+
mysql版本:8+
将Mysql以及Redis密码改为自己的,可以适当修改日志级别
将配置文件放到jar包同级目录下的config文件夹
spring:
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
session:
redis:
namespace: "dimstack:session"
flush-mode: on_save
save-mode: always
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/dim_stack?characterEncoding=utf-8&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&useAffectedRows=true
username: root
password: "ling060318"
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 3
min-idle: 3
max-active: 20
max-wait: 60000
validation-query: SELECT 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 100MB
data:
redis:
host: 127.0.0.1
port: 6379
password: ""
timeout: 5s
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1ms
devtools:
restart:
enabled: false
livereload:
enabled: false
thymeleaf:
cache: true
enabled: true
prefix: classpath:/templates/
suffix: .html
encoding: UTF-8
servlet:
content-type: text/html
profiles:
active: dev
springdoc:
api-docs:
enabled: true
path: /v3/api-docs
swagger-ui:
enabled: true
path: /swagger-ui/index.html
cors:
enabled: true
project:
version: ${project.version}
build-date: ${maven.build.timestamp}
management:
endpoints:
enabled-by-default: false
web:
exposure:
include: health,info
endpoint:
health:
enabled: true
show-details: always
info:
enabled: true
metrics:
enabled: false
shutdown:
enabled: false
mybatis:
type-aliases-package: xyz.lingview.dimstack.**.domain
mapper-locations: classpath*:mapper/*Mapper.xml
config-location: classpath:mybatis-config.xml
server:
port: 2222
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
max-threads: 200
min-spare-threads: 10
protocol-header: X-Forwarded-Proto
remote-ip-header: X-Forwarded-For
forward-headers-strategy: native
logging:
level:
xyz.lingview.dimstack: info
org.springframework: warn
org.springframework.security: info
org.springframework.session: info
org.springframework.web: info
file:
# 文件存储目录
data-root: .
upload-dir: upload
# 日志存储目录
log-root: .
app:
theme:
active-theme: default
themes-path: themes
需要手动将dim_stack.sql这个文件导入创建的数据库
下载5+版本的redis双击redis-server启动即可,linux系统无需多言hhh
java -jar dim_stack.jar文章内容页已支持SSR并且适配主流搜索引擎,使用动态生成的 robots.txt 以及 sitemap.xml
- 针对搜索引擎 User-Agent 自动返回服务器渲染的 HTML。
- SSR 页面包含:
<title>:文章标题<meta name="description">:文章摘要<meta name="keywords">:文章标签- 文章内容和发布时间
- ......
- 普通用户访问则返回 SPA 首页,保持 React 的交互体验。
- 支持主流搜索引擎爬虫:
- Googlebot、Bingbot、Baiduspider、DuckDuckBot、Sogou、360Spider 等
白天模式
夜晚模式
密码文章
文章阅读器
评论区
文章搜索
控制台主页
个人中心
用户管理
用户权限使用RBAC,可以在此功能区切换用户角色
文章管理
文章审核
评论管理
标签&分类管理
菜单编辑
站点信息设置
主题设置
在此,我们衷心感谢以下为本项目提供帮助、支持或灵感的个人和组织:
感谢所有参与本项目的贡献者(按字母顺序排列):
- 感谢所有为本项目贡献代码、提出问题和提供反馈的开发者。
- 感谢开源社区持续的支持与贡献。
如果你在本项目中做出了贡献,请提交 PR 将你的名字加入到致谢名单中!





























