從零搭建自己的社區(qū)系統(tǒng),這個(gè)開(kāi)源項(xiàng)目值得擁有(社區(qū)系統(tǒng)開(kāi)發(fā))
??大家好,我是為廣大程序員兄弟操碎了心的小編,每天推薦一個(gè)小工具/源碼,裝滿你的收藏夾,每天分享一個(gè)小技巧,讓你輕松節(jié)省開(kāi)發(fā)效率,實(shí)現(xiàn)不加班不熬夜不掉頭發(fā),是我的目標(biāo)!
??今天小編推薦一套前后端不分離的開(kāi)源社區(qū)系統(tǒng),基于目前主流 Java Web 技術(shù)棧,并提供詳細(xì)的開(kāi)發(fā)文檔和配套教程。包含帖子、評(píng)論、私信、系統(tǒng)通知、點(diǎn)贊、關(guān)注、搜索、用戶設(shè)置、數(shù)據(jù)統(tǒng)計(jì)等模塊。
開(kāi)源協(xié)議
??使用 MIT 開(kāi)源許可協(xié)議
鏈接地址
??包含詳細(xì)文檔和大量圖例, 幫助讀者快速掌握本項(xiàng)目,配套友好教程, 帶領(lǐng)讀者從零開(kāi)始實(shí)現(xiàn)本項(xiàng)目
技術(shù)棧
前端
- Thymeleaf
- Bootstrap 4.x
- Jquery
- Ajax
后端
- Spring
- Spring Boot 2.1.5 RELEASE
- Spring MVC
- ORM:MyBatis
- 數(shù)據(jù)庫(kù):MySQL 5.7
- 分布式緩存:Redis
- 本地緩存:Caffeine
- 消息隊(duì)列:Kafka 2.13-2.7.0
- 搜索引擎:Elasticsearch 6.4.3
- 安全:Spring Security
- 郵件任務(wù):Spring Mail
- 分布式定時(shí)任務(wù):Spring Quartz
- 日志:SLF4J(日志接口) Logback(日志實(shí)現(xiàn))
功能列表
- 注冊(cè)
- 登錄 | 登出:動(dòng)態(tài)生成驗(yàn)證碼記住我
- 賬號(hào)設(shè)置:修改頭像修改密碼
- 過(guò)濾敏感詞:前綴樹(shù)
- 帖子模塊:發(fā)布帖子(過(guò)濾敏感詞)分頁(yè)顯示所有的帖子支持按照 “發(fā)帖時(shí)間” 顯示支持按照 “熱度排行” 顯示(Spring Quartz)查看帖子詳情權(quán)限管理(Spring Security Thymeleaf Security)未登錄用戶無(wú)法發(fā)帖“版主” 可以看到帖子的置頂和加精按鈕并執(zhí)行相應(yīng)操作“管理員” 可以看到帖子的刪除按鈕并執(zhí)行相應(yīng)操作“普通用戶” 無(wú)法看到帖子的置頂、加精、刪除按鈕,也無(wú)法執(zhí)行相應(yīng)操作
- 評(píng)論模塊:發(fā)布對(duì)帖子的評(píng)論(過(guò)濾敏感詞)分頁(yè)顯示評(píng)論發(fā)布對(duì)評(píng)論的回復(fù)(過(guò)濾敏感詞)權(quán)限管理(Spring Security)未登錄用戶無(wú)法使用評(píng)論功能
- 私信模塊:發(fā)送私信(過(guò)濾敏感詞)私信列表查詢當(dāng)前用戶的會(huì)話列表每個(gè)會(huì)話只顯示一條最新的私信支持分頁(yè)顯示私信詳情查詢某個(gè)會(huì)話所包含的所有私信訪問(wèn)私信詳情時(shí),將顯示的私信設(shè)為已讀狀態(tài)支持分頁(yè)顯示權(quán)限管理(Spring Security)未登錄用戶無(wú)法使用私信功能
- 統(tǒng)一處理 404 / 500 異常:普通請(qǐng)求異常異步請(qǐng)求異常
- 統(tǒng)一記錄日志
- 點(diǎn)贊模塊:支持對(duì)帖子、評(píng)論/回復(fù)點(diǎn)贊第 1 次點(diǎn)贊,第 2 次取消點(diǎn)贊首頁(yè)統(tǒng)計(jì)帖子的點(diǎn)贊數(shù)量詳情頁(yè)統(tǒng)計(jì)帖子和評(píng)論/回復(fù)的點(diǎn)贊數(shù)量詳情頁(yè)顯示當(dāng)前登錄用戶的點(diǎn)贊狀態(tài)(贊過(guò)了則顯示已贊)統(tǒng)計(jì)我的獲贊數(shù)量權(quán)限管理(Spring Security)未登錄用戶無(wú)法使用點(diǎn)贊相關(guān)功能
- 關(guān)注模塊:關(guān)注功能取消關(guān)注功能統(tǒng)計(jì)用戶的關(guān)注數(shù)和粉絲數(shù)我的關(guān)注列表(查詢某個(gè)用戶關(guān)注的人),支持分頁(yè)我的粉絲列表(查詢某個(gè)用戶的粉絲),支持分頁(yè)權(quán)限管理(Spring Security)未登錄用戶無(wú)法使用關(guān)注相關(guān)功能
- 系統(tǒng)通知模塊:通知列表顯示評(píng)論、點(diǎn)贊、關(guān)注三種類型的通知通知詳情分頁(yè)顯示某一類主題所包含的通知進(jìn)入某種類型的系統(tǒng)通知詳情,則將該頁(yè)的所有未讀的系統(tǒng)通知狀態(tài)設(shè)置為已讀未讀數(shù)量分別顯示每種類型的系統(tǒng)通知的未讀數(shù)量顯示所有系統(tǒng)通知的未讀數(shù)量導(dǎo)航欄顯示所有消息的未讀數(shù)量(未讀私信 未讀系統(tǒng)通知)權(quán)限管理(Spring Security)未登錄用戶無(wú)法使用系統(tǒng)通知功能
- 搜索模塊
- 網(wǎng)站數(shù)據(jù)統(tǒng)計(jì):(管理員專屬)獨(dú)立訪客 UV支持單日查詢和區(qū)間日期查詢?nèi)栈钴S用戶 DAU支持單日查詢和區(qū)間日期查詢權(quán)限管理(Spring Security)只有管理員可以查看網(wǎng)站數(shù)據(jù)統(tǒng)計(jì)
- 優(yōu)化網(wǎng)站性能:處理每次請(qǐng)求時(shí),都要通過(guò)攔截器根據(jù)登錄憑證查詢用戶信息,訪問(wèn)的頻率非常高。因此將已成功登錄的用戶信息在緩存 Redis 中保存一段時(shí)間,查詢用戶信息的時(shí)候優(yōu)先從緩存中取值;若緩存中沒(méi)有該用戶信息,則將其存入緩存;用戶信息變更時(shí)清除對(duì)應(yīng)的緩存數(shù)據(jù);引入本地緩存 Caffeine,緩存熱帖列表和帖子的總數(shù),避免緩存雪崩(這里面還能再加一層二級(jí)緩存 Redis)。
部分演示截圖
首頁(yè)
登錄頁(yè)
帖子詳情頁(yè)
img
個(gè)人主頁(yè)
朋友私信頁(yè)
私信詳情頁(yè)
系統(tǒng)通知頁(yè)
通知詳情頁(yè)
賬號(hào)設(shè)置頁(yè)
img
數(shù)據(jù)統(tǒng)計(jì)頁(yè)
搜索詳情頁(yè)
結(jié)尾
??本期就分享到這里,我是小編南風(fēng)吹,專注分享好玩有趣、新奇、實(shí)用的開(kāi)源項(xiàng)目及開(kāi)發(fā)者工具、學(xué)習(xí)資源!希望能與大家共同學(xué)習(xí)交流。