已开源, spring boot 开发一个社区/论坛/博客,有详细部署教程! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
qbian
V2EX    分享创造

已开源, spring boot 开发一个社区/论坛/博客,有详细部署教程!

  •  2
     
  •   qbian 2020-12-13 23:06:21 +08:00 4418 次点击
    这是一个创建于 1845 天前的主题,其中的信息可能已经有所发展或是发生改变。

    forum-java

    spring boot 框架开发的社区:开发者客栈

    简介

    forum-java 是一个开源的现代化社区平台,它实现了:

    • 面向内容讨论的论坛;
    • 面向知识问答的社区;
    • 100% 开源;

    为什么要做这个项目?

    • 有一些企业在做开放平台领域,就需要一个开发者社区的网站供开发者学习交流(本项目参考了微信开放平台头条开发者社区有赞云开发者社区淘宝开放平台等社区功能为需求背景开发);
    • PHP 语言较多,Java 的很少,目前 spring boot 开源的更是几乎没有,无法很好的接入公司内部系统;
    • 很多社区功能过于简单,无法满足大部分需求;
    • 界面风格老式,没有跟上时代发展的审美;
    • 缺乏实际运营需求的功能,管理功能过于简单;

    功能列表

     用户端 文章分类 筛选文章 标签 查看详情 筛选文章 /问答 文章 写文章 编辑 删除 评论 点赞 查看详情 问答 提问题 编辑 删除 查看详情 评论 关注 设置评论为最佳答案 筛选已解决问题 筛选未解决问题 用户 查看详情 编辑个人资料 更新登录密码 关注好友 查看粉丝 消息 文章 /问答被关注通知 文章 /问答被评论通知 个人被关注通知 设置消息为已读 关注 关注的用户文章 /问答 关注的问答 评论的问答 点赞的文章 评论的文章 搜索 根据文章 /问答标题 /内容模糊搜索 管理端 用户管理 禁用 /启用 设置为管理员 /取消管理员 操作日志 操作类别筛选 文章管理 设置为官方 设置为置顶 设置为加精 审核通过(可见) 审核不过(不可见) 文章类别管理 审核通过(可见) 审核不过(不可见) 新增分类 问答管理 审核通过(可见) 审核不过(不可见) 标签管理 审核通过(可见) 审核不过(不可见) 新增标签 

    开发者客栈.png

    特性

    前端

    • 多终端适配(手机端,pc 端)
    • 自定义主题颜色,方便企业用户自定义主题
    • 编辑器支持 control + s 保存
    • 编辑器支持 control + v 复制图片上传

    后端

    • 日志带有调用链,方便排查问题
    • 分布式 session,支持集群部署
    • 用户角色权限分级,便于用户管理
    • 接口权限校验,接口操作更安全

    可扩展功能接口

    • 文章 /问答更新时自带审核,可接入审核中心便于运营管理
    • 文件存储抽象接口,可支持自定义接入企业内部文件储存服务
    • 缓存服务抽象接口,可支持自定义接入企业内部缓存服务
    • 搜索服务抽象接口,可支持自定义接入企业内部搜索服务

    技术栈

    后端

    • 数据库:mysql
    • 持久层框架:mybatis
    • 数据库连接池管理:hikaricp
    • 数据库分页插件:github pagehelper
    • mvc 框架:spring mvc
    • 应用层容器:spring boot
    • json 序列化工具:fastjson
    • 邮件发送 sdk:javax mail
    • 七牛云存储 sdk:qiniu java sdk
    • 服务端页面渲染:thymeleaf

    前端

    • 前端 markdown 编辑器:mavon-editor
    • 管理后台 js 框架:vue
    • 用户端 UI 框架:bootstrap
    • 管理后台 UI 框架 iview

    部分页面展示

    用户页面展示

    • 首页

    首页

    image.png

    • 问答页

    问答页

    image.png

    • 关注页

    image.png

    • 消息列表页

    image.png

    • 文章详情页

    文章详情页

    文章详情页

    • 标签详情页

    标签详情页

    • 搜索页

    image.png

    • 用户主页

    用户主页

    image.png

    • 写文章页

    写文章页

    管理后台页面

    image.png

    安装

    请参考 forum-java 安装指南

    开源地址: https://github.com/Qbian61/forum-java

    20 条回复    2021-04-25 21:22:08 +08:00
    vhus
        1
    vhus  
       2020-12-13 23:12:03 +08:00
    mark 一下,不错的项目,界面 /字体 /功能还有优化空间。
    qbian
        2
    qbian  
    OP
       2020-12-13 23:19:39 +08:00   1
    @vhus 嗯嗯,刚开源,后面会不断跟进优化的,感谢多多提建议哈
    asuka02
        3
    asuka02  
       2020-12-13 23:50:19 +08:00 via Android
    问一个门外汉的问题:前端不是用的 vue 吗?怎么还需要服务端用 thymeleaf 页面渲染
    dengshen
        4
    dengshen  
       2020-12-14 02:00:01 +08:00 via iPhone
    希望不要加太多的功能。保持简单才是最好的
    devld
        5
    devld  
       2020-12-14 08:01:47 +08:00 via Android
    界面看着挺漂亮的
    manami
        6
    manami  
       2020-12-14 08:09:17 +08:00 via Android
    @asuka02 前后端没分离,只是使用了 vue/iview 构建 ui 界面,需要 thymelealf 渲染
    manami
        7
    manami  
       2020-12-14 08:34:45 +08:00 via Android
    感谢开源。正在使用 go 写一个社区程序,楼主的项目值得参考
    qbian
        8
    qbian  
    OP
       2020-12-14 09:41:49 +08:00
    @asuka02 用户端如果用 vue 的话,不同 node 服务去做后端渲染,那页面的渲染工作就要在浏览器端,这样搜索引擎抓取到的网页就是一个没有内容的页面,搜索引擎不会去执行你的 vue 代码渲染页面的。所以用户端用了 thymeleaf,索引擎抓取到的页面就是已经渲染好的,有内容的,可构建索引的页面。项目中用 vue 的是管理后台,管理后台不需要被搜索引擎爬取到。
    qbian
        9
    qbian  
    OP
       2020-12-14 09:42:57 +08:00
    @dengshen 嗯嗯,目前就是保存最简单的社区该有的功能,不会考虑去加一些少数需求的高级特性
    qbian
        10
    qbian  
    OP
       2020-12-14 09:44:44 +08:00
    @manami 如果考虑用 Java 写社区的话,可以考虑这个项目哦
    qbian
        11
    qbian  
    OP
       2020-12-14 09:45:18 +08:00
    @devld 谢谢,不是做 UI 的,所以参考了一些其他网站的设计
    superBearL
        12
    superBearL  
       2020-12-14 10:01:59 +08:00
    mark, 有空学习一下
    id4alex
        13
    id4alex  
       2020-12-14 10:58:54 +08:00
    提个建议, 做这种 blog/社区 需要考虑 seo 的, 是不是要上 ssr 或者 nuxt.js
    qbian
        14
    qbian  
    OP
       2020-12-14 11:03:29 +08:00
    @id4alex 考虑 seo 了,页面是 Java 服务端渲染的,渲染模版 thymeleaf 。
    qbian
        15
    qbian  
    OP
       2020-12-14 11:03:51 +08:00
    @superBearL 感谢
    id4alex
        16
    id4alex  
       2020-12-14 11:34:23 +08:00
    @qbian 你这个套路就很强了, 混合端
    qbian
        17
    qbian  
    OP
       2020-12-14 12:39:43 +08:00
    @id4alex 毕竟不想再去搞 nodejs 那块了,不过管理后台一般都是前后端分离的。
    sammyM
        18
    sammyM  
       2020-12-14 12:42:23 +08:00 via iPhone
    mark,支持下学习了
    qbian
        19
    qbian  
    OP
       2020-12-14 12:49:47 +08:00
    @sammyM 感谢
    snw
        20
    snw  
       2021-04-25 21:22:08 +08:00
    项目看起来不错。

    不过建议仔细审阅一下 License,AGPL 许可不限制商用而且禁止添加任何其他限制条款(第 10 段),对于这类限制条款,使用者可以直接移除(第 7 段)。所以你可能需要魔改 AGPL 许可才能禁止商业用户使用社区版。
    开源项目常见的 dual licensing 做法是:想二开愿意开源的,给社区版(A)GPL 许可;想二开不愿开源的,买商业版许可。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2435 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 07:45 PVG 15:45 LAX 23:45 JFK 02:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86