Files
MemRelay/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 系统技术栈选型(2026-09-30).md
T
memrelay b0a4eb5d3a create: NixMsg 系统技术栈选型(2026-09-30)
MemRelay-Operation: memory-save:nixmsg-20260930-0505-techstack
MemRelay-Resource: bc650d0d-5329-4212-bec2-c091db37278f
2026-09-30 04:54:35 +08:00

2.0 KiB
Raw Blame History

title, type, permalink, stable_id, scope, memory_type, project_id, usage_profile_id, status, revision, request_id, created_at, updated_at, tags
title type permalink stable_id scope memory_type project_id usage_profile_id status revision request_id created_at updated_at tags
NixMsg 系统技术栈选型(2026-09-30) decision main/projects/25464650-ed5d-440e-b362-190f2852d451/nix-msg-系统技术栈选型-2026-09-30 bc650d0d-5329-4212-bec2-c091db37278f project decision 25464650-ed5d-440e-b362-190f2852d451 0c9feb46-d06e-43cd-9ef0-c5813c84a998 active 1 nixmsg-20260930-0505-techstack 2026-09-29T20:54:32.371365+00:00 2026-09-29T20:54:32.371365+00:00
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 尚未讨论。