一个简洁轻量的 Go 语言开发的论坛系统,采用前后端不分离架构,提供完整的社区讨论功能。
本项目基于 https://github.com/kingwrcy/hotnews 二开,感谢原作者的贡献。
- 用户系统:注册、登录、个人资料管理
- 帖子管理:发布、编辑、删除、搜索
- 评论系统:支持多级评论回复
- 标签系统:灵活的帖子分类和标签管理
- 投票系统:点赞、踩功能
- 消息通知:实时消息提醒
- 内容审核:举报和管理员审核机制
- 用户管理:用户列表、权限管理
- 内容审核:帖子/评论审核
- 统计分析:用户活跃度、帖子统计
- 系统设置:网站配置管理
- 极简设计:得益于Go语言强大的内嵌静态资源功能,镜像包仅6.29MB,运行时内存占用仅28MB
- 高性能:基于 Go 的高并发处理
- 缓存优化:使用内存缓存提升访问速度
- SEO友好:支持搜索引擎优化
- 响应式设计:适配移动端和桌面端
- Markdown支持:支持完整的 Markdown 格式
- 语言:Go 1.19+
- 框架:Gin Web Framework
- 数据库:PostgreSQL
- ORM:GORM
- 验证:Validator
- 日志:Zap
- 模板引擎:Go HTML Template
- 样式:UnoCSS + 自定义CSS
- 脚本:jQuery + 原生JavaScript
- 编辑器:Markdown编辑器(支持ScEditor)
- 图标:自定义SVG图标
- 容器化:Docker + Docker Compose
- 反向代理:Nginx
- 进程管理:Supervisor
- Go 1.19 或更高版本
- PostgreSQL 13 或更高版本
- SMTP服务(可选,用于邮件功能)
- Google OAuth(可选,用于Google登录)
- 克隆项目
git clone https://github.com/TwoThreeWang/go_simple_forum
cd go_simple_forum- 安装依赖
go mod download- 配置环境
# 复制环境变量模板
cp .env.example .env
# 编辑配置文件
vim .env- 启动应用
./bulid.sh- 访问应用
打开浏览器访问
http://localhost:32919
- 首个注册用户自动成为管理员
- 管理员可以添加/管理父标签和子标签
- 支持用户列表管理和IP统计
go_simple_forum/
├── handler/ # 路由处理器
├── model/ # 数据模型
├── middleware/ # 中间件
├── templates/ # HTML模板
├── static/ # 静态资源
├── utils/ # 工具函数
├── provider/ # 服务提供者
├── task/ # 定时任务
├── sql/ # 数据库脚本
├── vo/ # 视图模型
├── Dockerfile # Docker配置
├── docker-compose.yml
├── go.mod # Go模块配置
└── main.go # 程序入口
| 表名 | 介绍 |
|---|---|
| tb_comment | 评论详情表 |
| tb_inspect_log | 审核日志表 |
| tb_invite_record | 邀请码表 |
| tb_message | 消息表 |
| tb_post | 文章表 |
| tb_post_tag | 文章标签关系表 |
| tb_settings | 系统设置表 |
| tb_statistics | 数据统计表 |
| tb_tag | 标签详情表 |
| tb_user | 用户表 |
| tb_vote | 投票表 |
# 运行应用
go run main.go
# 运行测试
go test ./...
# 代码格式化
go fmt ./...
# 依赖整理
go mod tidy- 在
model/目录定义数据模型 - 在
handler/目录添加处理器 - 在
templates/目录创建对应模板 - 更新路由配置
- 页面缓存:热门页面缓存5分钟
- 用户缓存:用户信息缓存30分钟
- 统计缓存:统计数据缓存1小时
- 搜索结果:搜索结果缓存15分钟
- 关键字段索引优化
- 查询语句优化
- 分页查询使用游标
- 静态资源压缩
- CDN加速
- 懒加载图片
- 浏览器缓存
- 密码安全:bcrypt加密存储
- CSRF保护:所有表单包含CSRF令牌
- XSS防护:输入内容严格过滤
- SQL注入防护:使用预编译语句
- 验证码:集成Cloudflare Turnstile
- 频率限制:API调用频率限制
本项目采用 MIT 许可证。
查看 CHANGELOG.md 了解版本更新历史。
- 感谢所有贡献者的努力
- 感谢开源社区的支持
- 特别鸣谢使用到的开源项目
⭐ 如果这个项目对你有帮助,请给个星标支持一下!
