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

29 lines
2.0 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.
---
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 尚未讨论。