跳转至

技术栈概览

KanjiIQ以自托管、开源优先的理念构建。每个组件都运行在我们控制的基础设施上,无供应商锁定。

技术摘要

层级 技术 用途
前端 Flutter Web 跨平台UI框架
后端 Dart Frog 轻量级REST API服务器
数据库 PostgreSQL 15 主数据存储,支持JSONB
翻译 OpenAI API 动态内容翻译
编排 k3s (Kubernetes) 容器编排
Ingress Traefik 反向代理、TLS终止、速率限制
TLS cert-manager + Let's Encrypt 自动化SSL证书管理
CI/CD Forgejo Actions 构建、推送和部署自动化
容器仓库 Forgejo Container Registry Docker镜像存储
版本控制 Forgejo(Gitea分支) 自托管Git平台
托管 Hetzner专用服务器 基础设施提供商
管理后台 Flutter Web 区域/分析管理后台

为什么选择这些技术?

全栈Dart

最具特色的架构选择是前后端都使用Dart

  • Flutter(Dart)用于前端
  • Dart Frog(Dart)用于后端

这带来了:

  • 客户端和服务器之间共享模型定义
  • 整个团队只需掌握一种语言
  • 一致的工具链(Dart分析器、格式化器、测试框架)
  • 潜在的共享业务逻辑包

自托管技术栈

KanjiIQ刻意避免托管云服务,转而采用自托管替代方案:

托管服务 KanjiIQ使用 优势
GitHub/GitLab Forgejo 完全控制,无按用户收费
Docker Hub Forgejo Container Registry 与源码同一平台
GitHub Actions Forgejo Actions 相同的YAML语法,自托管运行器
AWS RDS 在k8s上运行PostgreSQL 无按小时计费的数据库费用
AWS ALB Traefik 内置于k3s,免费
AWS ACM cert-manager + Let's Encrypt 免费TLS证书

成本效率

整个生产环境运行在一台Hetzner专用服务器上,月度成本可预测,显著低于同等的云托管服务。详见基础设施了解详情。

架构原则

  1. 容器优先:每个组件都通过多阶段Docker构建容器化
  2. 基础设施即代码:所有Kubernetes清单都纳入版本控制
  3. 非root执行:所有容器以UID 1000运行,确保安全
  4. 健康检查:每个容器都有存活和就绪探针
  5. 离线能力:前端通过本地SQLite缓存实现无网络工作
  6. 隐私意识:符合GDPR/CCPA的分析,支持自动匿名化