Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
fb2ca80
docs: 重构文档结构并修改内容
MF-B Mar 29, 2026
cbcbc82
refactor(backend): enrich godoc and refactor notes
MF-B Mar 29, 2026
38e52fe
chore(tooling): add lint and todo index generator
MF-B Mar 29, 2026
6ae21d6
docs(readme): simplify runtime command snippet
MF-B Mar 29, 2026
6762a50
docs: 修改后端规范文档
MF-B Mar 29, 2026
1257686
refactor(backend): 解耦服务与存储依赖并统一领域错误
MF-B Mar 29, 2026
282a5c9
test(backend): 补齐 API Handler 与 SQLite Store 单元测试
MF-B Mar 29, 2026
5ff8703
refactor(backend): 注释中文化并统一 TODO 书写
MF-B Mar 29, 2026
ee73d1b
chore(docs): 同步 TODO 规范与索引生成规则
MF-B Mar 29, 2026
779e3fa
refactor(backend): 统一处理器的错误映射,并包装服务层错误
MF-B Mar 29, 2026
db549c2
docs: 添加计划说明
MF-B Mar 30, 2026
1585e8a
docs: 格式化文档
MF-B Mar 30, 2026
1997df0
chore: 更改task的fmt命名格式, 添加文档的lint与fmt
MF-B Mar 30, 2026
dcdf010
refactor: 修改前端代码注释
MF-B Mar 30, 2026
eb1cf69
docs: 添加前端注释规范
MF-B Mar 30, 2026
5e7dc2e
chore: 使 TODO 生成结果可复现,并固定后端 Lint 工具的版本
MF-B Mar 30, 2026
8db31e2
fix(frontend): 将 API 和 Store 的错误信息映射为 i18n 国际化文案(展示于输出面板)
MF-B Mar 30, 2026
ca2ccb8
docs: 修复一个错别字
MF-B Mar 30, 2026
1666d9a
docs: 修改Readme待办清单
MF-B Mar 31, 2026
31073f3
feat: 添加静态镜像注册表
MF-B Mar 31, 2026
daa05d4
chore: 添加markdownlint配置
MF-B Mar 31, 2026
6217c96
docs: 更新plan与Readme
MF-B Mar 31, 2026
5ea7fb5
feat: 添加镜像市场前端页面
MF-B Apr 1, 2026
2d12a42
feat: 实现容器运行状态实时同步
MF-B Apr 1, 2026
434dbf4
feat: 添加基于 YAML 的游戏模板
MF-B Apr 2, 2026
006067c
feat: 添加Volume目录挂载与端口映射
MF-B Apr 2, 2026
f7d2264
feat: 添加网页控制台
MF-B Apr 3, 2026
403b12c
feat: 添加容器配置页面
MF-B Apr 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
run: task frontend:install

- name: Run formatting checks
run: task fmt
run: task fmt:check

- name: Run lint checks
run: task lint
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
run: task frontend:install

- name: Run frontend format checks
run: task frontend:fmt
run: task frontend:fmt:check

- name: Run frontend lint checks
run: task frontend:lint
Expand Down
3 changes: 3 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"default": true
}
18 changes: 18 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 文档目录

[API](docs/api/contracts.md)

## 规范

[目录规范](docs/standards/directory.md)
[后端规范](docs/standards/backend.md)
[前端规范](docs/standards/frontend.md)
[运维规范](docs/standards/ops.md)

## 设计

[容器实例设计](docs/design-docs/instance_lifecycle.md)

## 执行计划

[执行计划目录说明](docs/exec-plans/README.md)
61 changes: 34 additions & 27 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,48 @@

## 运行指南

### Task 命令
```bash
task dev # 一键启动前后端开发服务
task fmt # 执行全局格式检查(当前依赖 backend:fmt)
task vet # 执行全局静态检查(当前依赖 backend:vet)
task test # 执行全局测试(当前依赖 backend:test)
task build # 统一编译前后端
task clean # 清理构建产物
task frontend:install # 安装前端依赖
```

## 待办清单

### 实例生命周期与资源调度
- [x] 开服与停服
- [x] 实例的创建与删除
- [ ] 实例重启与强制结束进程
- [ ] 基于 Cgroups 的 CPU 与内存资源配额可视化配置
### 镜像与模板

- [x] 静态镜像注册表(后端 JSON 配置)
- [x] 镜像市场前端页面(浏览、筛选、选用镜像)
- [x] 基于 YAML 的游戏模板规范设计
- [ ] 模板解析引擎(根据模板自动生成 Docker 启动参数)

### 实例生命周期

- [x] 容器基础生命周期:创建、删除、开启、停止
- [x] 容器运行状态实时同步
- [x] 创建容器时支持镜像选择
- [x] 创建容器时支持环境变量注入
- [x] 创建容器时支持 Volume 持久化目录挂载
- [ ] 创建容器时支持动态端口映射与防冲突检测
- [ ] 实例重启与强制终止
- [ ] 实例详情页(镜像信息、端口、环境变量、运行时长等)

### 资源管控与监控

- [ ] 基于 Cgroups 的 CPU 与内存资源配额配置
- [ ] 容器 CPU、内存、网络 I/O 运行态数据采集
- [ ] 前端实时折线图表展示硬件运行态数据

### 实时交互

### 实时交互与性能监控
- [ ] Web 控制台标准输出日志实时推流
- [ ] 网页端在线交互指令无缝下发
- [ ] 容器 CPU、内存、网络 I/O 运行态数据实时图表展示
- [ ] 网页端在线交互指令下发
- [ ] 前端终端高亮渲染及日志自动滚动

### 数据灾备与持久化
- [ ] 游戏容器 Volume 持久化目录挂载映射
- [ ] 游戏存档/数据一键手动快照备份
- [ ] 基于 Cron 表达式的自动化定时备份任务
- [ ] 一键回档功能
### 运维与文件管理

### 在线文件管理与差异化配置
- [ ] 可视化 Web 文件浏览器
- [ ] 游戏基础配置文件的在线文本编辑器
- [ ] 大文件 (Mod/插件) 上传及在线解压缩

## 注意事项
默认 SQLite 数据库路径为 `backend/data/minedock.db`(在 `backend` 目录启动时对应 `data/minedock.db`)。
可通过环境变量 `MINEDOCK_DB_PATH` 覆盖。
- [ ] 游戏配置文件在线文本编辑器
- [ ] 大文件上传及在线解压缩
- [ ] 对接第三方社区 API,实现整合包一键解析与下载
- [ ] 游戏存档一键手动快照备份
- [ ] 基于 Cron 表达式的自动化定时备份
- [ ] 一键回档功能
79 changes: 74 additions & 5 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tasks:
cmds:
- go run main.go

backend:fmt:
backend:fmt:check:
desc: Verify backend Go formatting
dir: backend
cmds:
Expand All @@ -21,12 +21,24 @@ tasks:
exit 1
fi

backend:fmt:fix:
desc: Format backend Go files with gofmt
dir: backend
cmds:
- gofmt -w .

backend:vet:
desc: Run backend go vet checks
dir: backend
cmds:
- go vet ./...

backend:lint:
desc: Run backend golangci-lint checks
dir: backend
cmds:
- go run github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8 run --config .golangci.yml ./...

backend:test:
desc: Run backend tests
dir: backend
Expand Down Expand Up @@ -64,12 +76,59 @@ tasks:
cmds:
- npm run lint

frontend:fmt:
frontend:fmt:check:
desc: Run frontend Prettier format checks
dir: frontend
cmds:
- npm run format:check

frontend:fmt:fix:
desc: Format frontend files with Prettier
dir: frontend
cmds:
- npm run format

docs:todo:
desc: Generate docs/exec-plans/TODO.md from TODO comments
cmds:
- go run ./scripts/todo-gen/main.go -root . -out ./docs/exec-plans/TODO.md

docs:lint:rules:
desc: Run Markdown rule checks for the knowledge base
cmds:
- npx --yes markdownlint-cli2 "AGENTS.md" "Readme.md" "docs/**/*.md"

docs:lint:rules:fix:
desc: Auto-fix Markdown rule violations where possible
cmds:
- npx --yes markdownlint-cli2 --fix "AGENTS.md" "Readme.md" "docs/**/*.md"

docs:links:check:
desc: Check Markdown links for the knowledge base
cmds:
- npx --yes markdown-link-check -q "AGENTS.md" "Readme.md" "docs"
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docs:links:check passes the docs directory to markdown-link-check, but the CLI expects Markdown file paths; passing a directory typically fails with an EISDIR/stat error. Consider changing this to a glob of markdown files (e.g. docs/**/*.md) or enumerating files via find/git ls-files before invoking the checker so the task works in CI.

Suggested change
- npx --yes markdown-link-check -q "AGENTS.md" "Readme.md" "docs"
- find docs -type f -name '*.md' -exec npx --yes markdown-link-check -q "AGENTS.md" "Readme.md" {} +

Copilot uses AI. Check for mistakes.

docs:lint:
desc: Run documentation lint checks
deps:
- docs:lint:rules
- docs:links:check

docs:lint:fix:
desc: Auto-fix documentation lint issues where possible
deps:
- docs:lint:rules:fix

docs:fmt:check:
desc: Run Markdown formatting checks
cmds:
- npx --yes prettier --check "AGENTS.md" "Readme.md" "docs/**/*.md"

docs:fmt:fix:
desc: Format Markdown documents with Prettier
cmds:
- npx --yes prettier --write "AGENTS.md" "Readme.md" "docs/**/*.md"

dev:
desc: Run backend and frontend dev servers in parallel
deps:
Expand All @@ -87,16 +146,26 @@ tasks:
cmds:
- rm -rf backend/bin frontend/dist

fmt:
fmt:check:
desc: Run global formatting checks
deps:
- backend:fmt
- frontend:fmt
- backend:fmt:check
- frontend:fmt:check
- docs:fmt:check

fmt:fix:
desc: Run global formatting fixes
deps:
- backend:fmt:fix
- frontend:fmt:fix
- docs:fmt:fix

lint:
desc: Run global lint checks
deps:
- backend:lint
- frontend:lint
- docs:lint

vet:
desc: Run global vet checks
Expand Down
17 changes: 17 additions & 0 deletions backend/.golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
run:
timeout: 5m
tests: true
modules-download-mode: readonly

linters:
disable-all: true
enable:
- govet
- staticcheck
- ineffassign
- unused
- gosimple

issues:
max-issues-per-linter: 0
max-same-issues: 0
23 changes: 23 additions & 0 deletions backend/games.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[
{
"id": "minecraft-java",
"name": "Minecraft Java Edition",
"description": "最流行的 Minecraft Java 版服务器,支持原版/Forge/Fabric/Paper 等多种模组加载器。",
"category": "minecraft",
"icon": "minecraft-java"
},
{
"id": "minecraft-bedrock",
"name": "Minecraft Bedrock Edition",
"description": "Minecraft 基岩版服务器,支持手机/主机/Win10 跨平台联机。",
"category": "minecraft",
"icon": "minecraft-bedrock"
},
{
"id": "terraria",
"name": "Terraria",
"description": "Terraria 专用服务器,支持 tShock 管理。",
"category": "sandbox",
"icon": "terraria"
}
]
2 changes: 2 additions & 0 deletions backend/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module minedock/backend
go 1.25.0

require (
github.com/coder/websocket v1.8.14
github.com/docker/docker v28.0.1+incompatible
modernc.org/sqlite v1.47.0
)
Expand Down Expand Up @@ -37,6 +38,7 @@ require (
go.opentelemetry.io/otel/trace v1.42.0 // indirect
golang.org/x/sys v0.42.0 // indirect
golang.org/x/time v0.15.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.2 // indirect
modernc.org/libc v1.70.0 // indirect
modernc.org/mathutil v1.7.1 // indirect
Expand Down
3 changes: 3 additions & 0 deletions backend/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g=
github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down Expand Up @@ -139,6 +141,7 @@ google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU=
google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
Expand Down
Loading
Loading