分享GitHub开源项目【摸鱼岛】
今天给大家分享一个有趣的开源项目——摸鱼岛(Fish Island),这是一个专为程序员打造的摸鱼神器!项目由作者 @lhccong 主导,贡献者 @Shingbb 参与开发,集成了实时信息聚合、摸鱼群聊、待办事项、小游戏和实用工具箱等功能。无论你是想在工作间隙偷个闲,还是想学习娱乐两不误,摸鱼岛都能满足你的需求!😎
项目完全开源,代码托管在GitHub上,欢迎大家体验、贡献或直接拿来作为自己的小项目!
🔗 在线体验地址: https://fish.codebug.icu/
🌈 后端地址: https://github.com/lhccong/fish-island-backend
🏖️ 前端地址: https://github.com/lhccong/fish-island-frontend
项目背景
作者@lhccong是个热爱摸鱼的程序员,喜欢在摸鱼时刷实时资讯。他发现市面上的信息聚合网站很有意思,于是决定自己动手开发一个类似的平台。随着开发的深入,他发现这个项目不仅好玩,还能整合多种实用功能,最终诞生了摸鱼岛——一个集学习、娱乐、社交于一体的摸鱼网站!🐟
技术栈
摸鱼岛的技术栈非常现代化,适合学习和参考:
- 前端:React、Antd、json-viewer、aj-captcha-react
- 后端:SpringBoot、MySQL、Redis、Netty、WebSocket、JSOUP爬虫
通过Redis和信息压缩优化,数据返回速度从1秒提升到100毫秒,性能提升10倍!💪
核心功能
摸鱼岛的功能丰富多彩,涵盖了程序员摸鱼的方方面面:
1. 摸鱼群聊 💬
基于用户反馈,摸鱼岛新增了群聊功能!你可以在这里与摸鱼小伙伴们讨论技术问题、分享B站视频,或者一起学习进步。编程导航+摸鱼聊天,完美结合!
📸 群聊界面:
摸鱼群聊 – 预览图
2. 聚合信息源 🌈
摸鱼岛聚合了多个热门信息源,包括编程导航、知乎、微博、网易云等热榜。后端通过JSOUP爬虫和接口请求获取数据,结合Redis优化,数据加载快如闪电!在这里,你可以轻松获取编程资讯和娱乐八卦,学习娱乐两不误。
📸 信息聚合界面:

信息聚合界面 – 预览图
3. 每日待办 💡
作者贴心地加入了待办事项功能,方便你记录每日任务。直接在网站上管理待办,摸鱼的同时还能保持高效!
📸 待办界面:
4. 小游戏 🎮
摸鱼怎么能少得了小游戏?目前支持五子棋和2048,代码由AI生成(推荐AI工具:v0.dev、bolt.new)。
- 五子棋:支持与AI对战或在线与好友对战,只需创建房间并分享房间号即可开玩!
📸 五子棋对战: - 2048:经典数字游戏,随时挑战你的最高分!
📸 2048:
5. 工具箱 🔧
- JSON格式化工具:程序员必备,快速格式化JSON数据,界面简洁实用。
📸 JSON格式化: - 老板键:上班摸鱼怕被发现?老板键来救场!支持两种模式:
- 普通模式:自定义快捷键跳转页面。
- 隐藏模式:按
Ctrl + Shift + B
快速显示自定义图片,伪装工作状态;再按Ctrl + Shift + S
设置老板页面。
📸 老板键:
开源与贡献
摸鱼岛作为一个开源项目,欢迎大家参与贡献!如果你有想聚合的数据源,或者有其他创意功能,可以通过以下方式加入:
贡献方式
- 页面元素抓取
适用场景:目标网站无API,需从HTML中提取数据。
推荐工具:Jsoup(Java)、BeautifulSoup(Python)、Cheerio(Node.js)。
要求:- 选择器精准,避免页面结构变化导致抓取失败。
- 减少HTTP请求,优化效率。
- 遵守robots.txt规则。
示例代码:
java复制代码Document doc = Jsoup.connect("https://example.com").get(); String title = doc.select("h1.article-title").text();
- 页面接口数据抓取
适用场景:目标网站提供API,可直接获取JSON/XML数据。
推荐工具:HttpClient(Java)、axios(Node.js)、requests(Python)。
要求:- 确保请求参数完整(headers、cookies、token)。
- 优化调用频率,避免触发反爬机制。
- 完善异常处理。
示例代码:
java复制代码String apiUrl = "https://api.example.com/data"; String response = HttpRequest.get(apiUrl).execute().body(); JSONObject json = JSON.parseObject(response);
数据源注册流程
- 添加数据源Key:在
HotDataKeyEnum.java
定义新Key。 - 更新数据源映射:在
DatabaseConfig.java
添加配置。 - 创建数据源类:在
datasource
目录下新建类,继承DataSource
,实现getHotPost
方法。 - 返回数据:按
HotPostDataVO
格式返回,示例:java复制代码HotPostDataVO.builder() .title(title) .url(url) .followerCount(followerCount) .excerpt(excerpt) .build();
贡献流程
- Fork仓库。
- 创建分支(如
feature/data-scraper-optimization
)。 - 提交代码,确保代码规范。
- 提交Pull Request,描述更改内容。
- 等待审核,审核通过后合并。
写在最后
摸鱼岛是一个充满创意和实用性的项目,不仅能让程序员在摸鱼时找到乐趣,还能通过开源社区的协作不断进化!如果你觉得这个项目有趣,不妨给个Star🌟,成为摸鱼岛的“精神股东”!也欢迎体验网站、提交Issue或贡献代码,让我们一起打造更棒的摸鱼天堂!💪
🎉 感谢每一位贡献者,你们的努力让摸鱼岛更精彩!
📌 项目地址:
- 后端: https://github.com/lhccong/fish-island-backend
- 前端: https://github.com/lhccong/fish-island-frontend
- 在线体验: https://fish.codebug.icu/
快来加入摸鱼岛的开源社区吧!🐟