Files
mce/README.md
Victor_Jay b997528bad
Some checks failed
CI / Lint + Build (push) Has been cancelled
docs: README 注明维护暂停状态
2026-06-30 19:16:23 +08:00

174 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img src="https://img.shields.io/badge/Go-1.26-00ADD8?style=flat-square&logo=go" alt="Go 1.26">
<img src="https://img.shields.io/badge/Gin-1.12-0096D6?style=flat-square&logo=go" alt="Gin 1.12">
<img src="https://img.shields.io/badge/GORM-1.31-7A6F5D?style=flat-square" alt="GORM 1.31">
<img src="https://img.shields.io/badge/PostgreSQL-16-4169E1?style=flat-square&logo=postgresql&logoColor=white" alt="PostgreSQL">
<img src="https://img.shields.io/badge/Redis-7-DC382D?style=flat-square&logo=redis&logoColor=white" alt="Redis">
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue?style=flat-square" alt="AGPL 3.0">
</p>
<h1 align="center">MetaZone Community Engine</h1>
<p align="center"><strong>MCE</strong> — 下一代开源社区引擎,为 BBS 3.0 而生</p>
> **⚠️ 维护状态**
> 因个人原因本项目暂时无法继续活跃维护。现有功能可正常使用Issues/PR 可能无法及时响应。
> 如有兴趣接手或继续开发,欢迎 Fork。
---
## 关于项目
MCE 是 **MetaZone Community Engine** 的缩写,是 MetaZone 品牌下的社区平台核心引擎。构建于 **MetaGenesis** 体系之上,定位为通用型社区/BBS 平台,面向下一个十年。
**核心理念:**
- 🌊 **流式社区**——告别传统板块制,内容以信息流自然流动
- 🤝 **平等参与**——去中心化讨论,每个成员权利平等
- 🧩 **模块可组装**——MetaGenesis 框架层提供通用基础能力,引擎层专注社区体验
- 🔓 **开放共享**——AGPL 开源,鼓励二次开发与生态共建
## 技术栈
| 类别 | 技术 | 版本 |
|------|------|------|
| 语言 | **Go** | 1.26 |
| Web 框架 | **Gin** | 1.12 |
| ORM | **GORM** | 1.31 |
| 数据库 | **PostgreSQL** | 16+ |
| 缓存 | **Redis** | 7+ |
| 密码加密 | **bcrypt** (cost=12) | — |
| 编辑器 | **Tiptap** (WYSIWYG) | — |
| 前端 | **SSR 模板** (Gin HTML) + 原生 JS/CSS | — |
| 架构 | 分层架构 (Controller → Service → Repository) | — |
## 当前功能
-**用户系统**——注册、登录、登出,会话管理
-**安全认证**——CSRF 保护、速率限制(账户 + IP、安全响应头
-**管理后台**——用户管理、角色权限控制、审核面板
-**账号注销**——用户自助注销7 天冷却期,登录二次确认恢复),站长禁止自删
-**密码修改**——修改后强制所有设备退登
-**IP 审计**——记录注册 IP、最后登录 IP 及时间
-**用户设置页**——个人资料修改(用户名、个性签名、头像上传与裁切)
-**头像处理**——JPEG/PNG/WebP 上传方形裁切512×512 WebP 编码
-**消息中心**——通知推送SSR 消息页面,已读/未读管理,未读数角标
-**@提及系统**——@用户搜索、通知推送、通知点击定位高亮
-**用户空间**——个人主页 `/space/:uid`,关注/取关,关注列表
-**帖子系统**——Markdown 发布/编辑/删除Tiptap 所见即所得编辑器
-**代码高亮**——highlight.js 60+ 主题,支持 30+ 编程语言
-**Shortcode 卡片**——`[zone:event:ID]` 活动/游戏/投票/资源等可扩展卡片
-**草稿自动保存**——localStorage 草稿,自动保存
-**审核工作流**——帖子 draft → pending → approved/rejected
-**多主题支持**——可切换的前端主题系统
-**赋值(赋能)系统**——社区互动激励,赋能溢出截断 + 防自赋能
-**收藏功能**——文章收藏,收藏夹管理
## 计划中
- 🔲 话题/分类导航
- 🔲 评论系统
- 🔲 邮箱验证
- 🔲 全文搜索
- 🔲 回收站(用户数据彻底清理)
- 🔲 Redis 会话 & 缓存层深度集成
## 快速开始
### 环境要求
| 依赖 | 最低版本 | 说明 |
|------|----------|------|
| Go | 1.26 | 编译运行 |
| PostgreSQL | 16 | 主数据库 |
| Redis | 7 | 会话存储(可选,关闭后使用内存存储) |
### 1. 克隆并配置
```bash
git clone git@git.metazone.cc:MetaZone/mce.git
cd mce
```
复制环境变量模板并填入实际值:
```bash
cp .env.example .env
```
编辑 `.env`,至少填入数据库密码:
```bash
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_USER=metazone
DATABASE_PASSWORD=your_password
DATABASE_DBNAME=metalab_dev
REDIS_ENABLED=true # 可选false 则使用内存存储
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
```
> 所有连接信息统一在 `.env` 管理。`config.yaml` 保留默认值兜底,通常无需修改。
### 2. 初始化数据库
```bash
# 按序执行迁移 SQL
psql -U metazone -d metalab_dev -f docs/migrations/001_uid_to_id.sql
psql -U metazone -d metalab_dev -f docs/migrations/002_announcements.sql
psql -U metazone -d metalab_dev -f docs/migrations/003_post_attributes.sql
psql -U metazone -d metalab_dev -f docs/migrations/004_categories_tags.sql
psql -U metazone -d metalab_dev -f docs/migrations/005_scheduled_posts.sql
```
首次部署后注册的第一个用户自动获得站长owner权限。
### 3. 启动
```bash
go run cmd/server/main.go
# 或编译后运行
go build -o mce cmd/server/main.go && ./mce
```
启动后访问 `http://localhost:8080`
> 生产环境部署详见 [`docs/deployment.md`](docs/deployment.md)。
## 项目结构
```
mce/
├── cmd/server/ # 入口:初始化 → 启动
├── internal/
│ ├── config/ # 配置加载YAML + .env
│ ├── router/ # 路由注册
│ ├── controller/ # 控制器(参数绑定 → 调服务 → 返回)
│ ├── service/ # 业务逻辑层
│ ├── repository/ # 数据访问层DAO
│ ├── model/ # 数据模型 + DTO
│ ├── middleware/ # 中间件(认证/CSRF/限流/安全)
│ ├── common/ # 公共工具(响应/分页/加密)
│ └── theme/ # 主题/模板管理
├── templates/ # 前端模板(多主题)
│ ├── MetaLab-2026/ # 前台主题
│ └── admin/ # 后台模板
└── docs/ # 开发文档
```
## 许可
本项目采用 **[GNU Affero General Public License v3.0 (AGPL-3.0)](https://www.gnu.org/licenses/agpl-3.0.html)** 许可。
**社区版**AGPL-3.0):可自由使用、修改、分发,但修改后通过网络提供服务时必须公开源码。
**商业授权**:如需闭源部署、私有化修改或商业技术支持,请联系 [metazone@foxmail.com](mailto:metazone@foxmail.com) 获取商业授权。
---
<p align="center">
<sub>Built on <a href="#">MetaGenesis</a> | &copy; 2024-2026 <a href="https://metazone.cc">MetaZone</a></sub>
</p>