CmsKit 仿掘金平台开发指南
一个功能完整的仿掘金内容社区平台,基于 .NET 10 + FreeSql 构建
🎯 项目概述
CmsKit 是基于 FreeKitModules 框架开发的内容管理系统,目标是打造一个功能媲美掘金平台的技术社区。项目采用 DDD 架构,支持文章发布、沸点动态、用户互动、智能推荐等核心功能。
核心特性
- ✅ 文章系统: 支持 Markdown/富文本编辑,草稿保存,分类标签
- ✅ 沸点系统: 短内容发布,话题讨论,投票功能
- ✅ 用户互动: 点赞评论,关注订阅,实时通知
- ✅ 搜索功能: MeiliSearch 全文搜索,智能推荐
- ✅ 权限控制: 基于角色的权限管理,内容审核
📊 功能对比与完成度
| 功能模块 | 掘金标准 | 当前状态 | 完成度 | 优先级 |
|---|---|---|---|---|
| 文章编辑器 | Vditor 高级编辑器 | 基础 Markdown 编辑器 | 60% | 🔴 高 |
| 实时通知 | SignalR 实时推送 | 基础异步通知 | 50% | 🔴 高 |
| 全文搜索 | MeiliSearch 智能搜索 | 数据库查询 | 40% | 🔴 高 |
| 个性化推荐 | 智能推荐算法 | 简单热度排序 | 25% | 🔴 高 |
| 定时发布 | 支持定时发布 | 仅草稿箱功能 | 30% | 🟡 中 |
| 专栏系统 | 小册/专栏管理 | 基础分类功能 | 40% | 🟡 中 |
| 多媒体支持 | 视频/图片优化 | 基础附件上传 | 60% | 🟡 中 |
| 用户成长 | 等级/勋章系统 | 积分系统设计 | 40% | 🟡 中 |
| 社交功能 | @用户/私信 | 关注/点赞/评论 | 70% | 🔵 低 |
🚀 快速开始
环境要求
- .NET 10.0+
- MySQL 8.4+ 或 SQL Server / PostgreSQL / SQLite
- Redis 6.0+
- MeiliSearch 1.0+(可选,用于全文搜索)
快速部署
-
克隆项目
git clone https://gitee.com/your-repo/FreeKitModules.git
cd FreeKitModules/src/Services/CmsKit -
配置数据库
# 更新连接字符串 appsettings.json
# FreeSql CodeFirst 模式,应用启动时自动同步表结构 -
启动服务
cd FreeKit.CmsKit.Host
dotnet run -
访问应用
- 前端: http://localhost:5000
- API 文档: http://localhost:5000/swagger
Docker 部署
# 使用Docker快速启动
docker-compose up -d
# 包含以下服务:
# - CmsKit应用服务
# - SQL Server数据库
# - Redis缓存
# - MeiliSearch搜索引擎
📚 文档导航
| 文档 | 描述 | 适用对象 |
|---|---|---|
| 系统架构设计 | 技术架构和系统设计说明 | 架构师/开发者 |
| 系统架构 | 业务功能和 DDD 分层设计 | 架构师/开发者 |
🎯 开发路线图
Phase 1: 核心体验提升 (2-3 个月)
- 基础文章和沸点系统
- 编辑器增强 - Vditor 集成,图片上传优化
- 实时通知 - SignalR 集成,实时消息推送
- 搜索优化 - MeiliSearch 完善,搜索建议
- 个性化推荐 - 基础推荐算法,用户画像
Phase 2: 功能完善 (2-3 个月)
- 专栏系统 - 专栏管理,付费内容
- 用户成长 - 等级权益,成就勋章
- 多媒体支持 - 视频处理,图片优化
- 定时发布 - FreeScheduler 集成,任务调度
Phase 3: 高级功能 (1-2 个月)
- 社交增强 - 私信系统,@用户功能
- 平台运营 - 数据分析,内容运营工具
- 性能优化 - 缓存策略,数据库优化
💼 技术栈
后端技术
- 框架: .NET 10, ASP.NET Core Web API
- ORM: FreeSql (CodeFirst,支持多数据库)
- 事件驱动: CAP + RabbitMQ
- 缓存: FreeRedis (Redis 7.4)
- 搜索: MeiliSearch v1.13 (全文搜索)
- 任务调度: FreeScheduler (基于 FreeRedis)
- 实时通信: SignalR (实时推送)
数据存储
- 主数据库: MySQL 8.4(亦支持 SQL Server / PostgreSQL / SQLite)
- 缓存层: FreeRedis (Redis 7.4)
- 搜索引擎: MeiliSearch v1.13
- 文件存储: 本地存储 / 阿里云 OSS
开发工具
- 架构模式: DDD (领域驱动设计)
- API 文档: Swagger/OpenAPI
- 代码质量: SonarQube
- 容器化: Docker + Docker Compose
快速开始
1. 注册模块
List<Type> typeAssemblies = new List<Type>()
{
typeof(Program),
typeof(IApplicationService),
typeof(FreeKitModule),
typeof(CmsKitModuleStartup),
};
containerBuilder.RegisterModule(new FreeKitModule(typeAssemblies.ToArray(), null));
containerBuilder.RegisterModule(new UnitOfWorkModule(typeAssemblies.ToArray(), null));
2. 依赖注入配置
services.AddModule<CmsKitModuleStartup>("module-cmskit", c);
3. CAP 分布式事务配置
var assemblies = new List<Assembly>
{
typeof(BasicIdentityModuleStartup).Assembly,
typeof(CmsKitModuleStartup).Assembly,
};
services.AddKitCap(c)
.AddSubscriberAssembly(assemblies.ToArray());
4. Swagger 配置
var projectNames = new List<string>()
{
"FreeKit.CmsKit",
"FreeKit.BasicIdentity"
};
services.AddSwagger(c, projectNames);
🤝 贡献指南
开发流程
- Fork 项目到个人仓库
- 创建功能分支
git checkout -b feature/new-feature - 提交更改
git commit -am 'Add new feature' - 推送分支
git push origin feature/new-feature - 创建 Pull Request
代码规范
- 遵循 C# Coding Conventions
- 使用有意义的命名
- 编写单元测试 (覆盖率>80%)
- 添加 XML 文档注释
问题反馈
- Issues - 报告 Bug 或功能建议
- 查看本文档站获取详细文档
- 欢迎 PR 和技术讨论
📊 项目状态
📝 更新日志
v1.2.0 (2024-XX-XX)
- ✨ 新增 Vditor 编辑器支持
- 🚀 实时通知系统优化
- 🔧 搜索功能增强
v1.1.0 (2024-XX-XX)
- ✨ 沸点系统完善
- 🐛 修复权限控制问题
- 📝 完善 API 文档
v1.0.0 (2024-XX-XX)
- 🎉 首个正式版本发布
- ✨ 基础文章和用户系统
- 🚀 完整的 CRUD 功能
📄 许可证
本项目采用 MIT 开源协议。
🙏 致谢
感谢所有为这个项目做出贡献的开发者!
让我们一起打造优秀的技术社区平台! 🚀