AntBlog 是一个前后端分离的博客系统,Go 语言实现,包含前台博客站点与后台管理系统,支持文章写作、发布、归档、评论、标签分类、媒体上传、简单权限管理等完整流程。
⚠️ :用 DDD 写此博客,是为了练习 DDD 领域驱动设计架构。写这个博客,用 DDD 实施起来,代码量大,感觉小项目写的话很多没必要接口、分层、值对象等,一般简单项目用传统的 MVC 或 Go 项目标准布局以及它的变种就能实现。比如博客项目,功能少、简单。
特此声明:
这是一个供程序学习用的应用 - 博客,里面有很多程序和功能不完善,可能出现错误以及bug,请谨慎用到实际环境中。
仅供学习之用。
首页:
文章浏览页面:
注册页面:
后台管理首页:
- DDD + 分层架构,领域模型与基础设施解耦,便于业务演进
- 双端路由体系,前台
/api/v1/*与后台/api/admin/*清晰分离 - 完整内容链路,Markdown 写作、预览、发布、归档、搜索、互动
- 统一错误码与响应结构,便于前后端联调和排障
- 支持 Docker 与 Docker Compose 一键部署
- 用户注册、登录、登出、Token 刷新
- 首页最新文章与分页展示
- 文章详情、点赞、收藏
- 评论发布与评论树展示
- 分类页、标签页、归档页、搜索页
- Markdown 样式渲染与图片展示
- 管理员登录、鉴权、权限控制
- 文章新建/编辑/发布/归档/删除
- 分类管理、标签管理
- 评论审核与管理
- 媒体上传与图片管理
- 仪表盘与快捷入口(含新建文章快捷按钮)
默认管理员账号(dev 环境):
- 用户名:
admin - 密码:
Admin@2026
后端目录 antblog-server/internal 采用明确的 DDD 分层:
domain:领域实体、值对象、领域服务、仓储接口application:用例编排、DTO、事务边界、跨聚合业务流程infrastructure:仓储实现、缓存实现、存储实现interfaces:HTTP Handler、Router、中间件、参数校验
依赖方向保持为:
interfaces -> application -> domain <- infrastructure
这种结构保证了:
- 业务规则不依赖 Gin/GORM 等框架实现
- 核心业务可测试、可替换、可演进
- 基础设施升级时对业务影响最小
- Go
- Gin
- GORM
- Fx(依赖注入)
- Zap(日志)
- Viper(配置)
- Validator(参数校验)
- JWT
- Redis
- MySQL
- Vue 3
- TypeScript
- Vite
- Pinia
- Vue Router
- Tailwind CSS
- shadcn/ui
- 启动 MySQL 与 Redis
- 执行建表 SQL:
antblog-server/docs/sqls/sqls.sql - 检查配置:
antblog-server/config/config.yaml - 启动后端:
cd antblog-server
go run .\cmd\server\main.go- 启动前端:
cd antblog-web
npm install
npm run dev已提供 PowerShell 部署脚本(目录:antblog-server/scripts/):
deploy-docker.ps1:使用docker build + docker run方式启动 MySQL、Redis、Serverdeploy-compose.ps1:使用 Docker Compose 方式一键构建并启动全套服务deploy-docker.sh:Linux 环境使用docker build + docker run启动deploy-compose.sh:Linux 环境使用 Docker Compose 一键启动
执行示例:
cd antblog-server\scripts
.\deploy-docker.ps1cd antblog-server\scripts
.\deploy-compose.ps1Linux 执行示例:
cd antblog-server/scripts
chmod +x deploy-docker.sh deploy-compose.sh
./deploy-docker.shcd antblog-server/scripts
./deploy-compose.sh可选参数示例:
.\deploy-compose.ps1 -ProjectName antblog -AppPort 8080 -MySQLRootPassword root123456 -RedisPassword foofooPROJECT_NAME=antblog APP_PORT=8080 MYSQL_ROOT_PASSWORD=root123456 REDIS_PASSWORD=foofoo ./deploy-compose.sh主配置文件:
antblog-server/config/config.yaml
可通过环境变量覆盖配置,前缀为 ANTBLOG_,例如:
ANTBLOG_SERVER_PORTANTBLOG_DATABASE_DSNANTBLOG_REDIS_ADDRANTBLOG_REDIS_PASSWORD