From b0a4eb5d3a15eeab1fe027f5af1c836d3fcce212 Mon Sep 17 00:00:00 2001 From: MemRelay Date: Wed, 30 Sep 2026 04:54:35 +0800 Subject: [PATCH] =?UTF-8?q?create:=20NixMsg=20=E7=B3=BB=E7=BB=9F=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E6=A0=88=E9=80=89=E5=9E=8B=EF=BC=882026-09-30?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MemRelay-Operation: memory-save:nixmsg-20260930-0505-techstack MemRelay-Resource: bc650d0d-5329-4212-bec2-c091db37278f --- .../NixMsg 系统技术栈选型(2026-09-30).md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 系统技术栈选型(2026-09-30).md diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 系统技术栈选型(2026-09-30).md b/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 系统技术栈选型(2026-09-30).md new file mode 100644 index 0000000..3da2ea5 --- /dev/null +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 系统技术栈选型(2026-09-30).md @@ -0,0 +1,29 @@ +--- +title: NixMsg 系统技术栈选型(2026-09-30) +type: decision +permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/nix-msg-系统技术栈选型-2026-09-30 +stable_id: bc650d0d-5329-4212-bec2-c091db37278f +scope: project +memory_type: decision +project_id: 25464650-ed5d-440e-b362-190f2852d451 +usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 +status: active +revision: 1 +request_id: nixmsg-20260930-0505-techstack +created_at: '2026-09-29T20:54:32.371365+00:00' +updated_at: '2026-09-29T20:54:32.371365+00:00' +tags: +- nixmsg +- tech-stack +- decision +--- + +用户 2026-09-30 选定(已写入 DEVELOPMENT.md 第 2 节): +- 后端 Go,HTTP 用标准库 net/http(Go 1.22 路由),不用 Gin/chi/Echo。 +- 数据库 SQLite(modernc.org/sqlite 纯 Go),database/sql 手写 SQL,不用 ORM 或 sqlc。 +- 不用 Redis 或其他中间件。 +- 前端 Vue 3 + TypeScript + Naive UI(用户选 Naive UI,我原推荐 Element Plus);Vite 构建后 go:embed 嵌进程序,运行时不需要 Node.js。 +- 部署:单文件二进制为主,同时提供 Docker 镜像(amd64、arm64)和 docker-compose 示例。 +- 监控:提供 Prometheus /metrics,只在后台监听开放;共用端口时要 metrics.token。 +- 证书:用户生产服务器装有 1Panel。评估结论:保留「程序读取证书文件并每小时自动重载」,1Panel 负责申请和自动续签,并勾选「推送证书到本地目录」(写入 fullchain.pem、privkey.pem)给程序读;不用 1Panel OpenResty 终止 TLS,因为它的 TCP/UDP 代理不做 TLS,裸 TCP 设备无法加密且端会被拆到两个端口。开发环境用明文或 mkcert。 +按推荐定下、用户未单独表态的:mochi-mqtt v2、coder/websocket、argon2id、go.yaml.in/yaml/v3、log/slog、prometheus/client_golang、自写迁移、Vite+Vue Router+Pinia+fetch、pnpm、Node 24 LTS(仅构建)、golangci-lint/ESLint/Prettier/vue-tsc、Vitest/Playwright、Taskfile、distroless static nonroot。代码仓库和 CI 尚未讨论。 \ No newline at end of file