ITADN
con2/konsti
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Konsti

Build

测试覆盖率报告 — 来自最新绿色主构建的单元测试和 E2E 覆盖率合并报告。

活动报名应用 Konsti。支持直接报名(先到先得)和抽签报名。

Konsti 被 RopeconTraconTracon HitpointSolmukohta 等活动使用。Konsti 自 Ropecon 2017 起投入使用,并被数千名用户使用。活动数据从 Kompassi Event Management System 获取。

功能

  • 直接报名(先到先得)
  • 使用 eventassigner-jseventassigner-random 的抽签报名
    • 用户可以选择加权偏好
    • 用户可以组成小组,以便被分配到同一节目项目

快速开始

  • 要求

    • Node.js 24.18.0
    • Docker
    • Yarn
  • 运行

    yarn
    yarn docker:db
    yarn run populate-db:dummy
    yarn start:dev
  • 打开 localhost:8000

  • 不同角色的登录凭据

    • 管理员: admin:test
    • 用户: test1:test | test2:test | test3:test
    • 同组用户: group1:test | group2:test | group3:test
    • 辅助人员: helper:test

您也可以在 Docker 中完全运行该项目:

yarn docker-compose:start

在这种情况下,通过 localhost:5000 访问前端。

运行多个本地实例

可以同时运行多个应用副本(例如每个 git worktree 一个),而不会发生端口或数据库冲突。每个检出会自动获得一个 PORT_OFFSET:主检出使用偏移量 0(即下文中的经典端口),每个链接的 worktree 会从所有 worktree 共享的注册表中获取最小的空闲槽位(主检出中的 .git/konsti-port-offsets.json,由 scripts/portOffset.ts 解析)。删除 worktree 会释放其槽位。偏移量会将每个端口平移相同的量,并选择一个专用的开发数据库:

PORT_OFFSET客户端 (Vite)服务器 / API开发数据库
0 (默认)80005000konsti
180015001konsti-1
280025002konsti-2
yarn start:dev   # in a worktree this resolves to e.g. offset 1 → localhost:8001

自动偏移量一致地应用于开发服务器和客户端 (start:dev, server, server:test, client)、Playwright 测试套件以及 开发数据库脚本(populate-db:*, load-past-event-data, update-kompassi-data),因此从同一工作树启动的所有组件都指向 同一实例。客户端开发服务器使用 strictPort,因此端口冲突 (例如被孤立进程占用的端口)会大声报错,而不是 静默地漂移到下一个可用端口。

显式设置的 PORT_OFFSET 始终优先于自动分配:

export PORT_OFFSET=5   # set once per terminal, before the commands below
yarn start:dev

要持久固定一个检出,请将 PORT_OFFSET=5 添加到 server/.env.developmentclient/.env.development.local(两者 均被 git 忽略);通过 shell 设置的变量仍然优先于文件。

所有实例共享端口为 27017 的单个 MongoDB 容器;它们保持 隔离,因为每个 PORT_OFFSET 使用自己的数据库名称。通过在其 工作树中运行 yarn populate-db:dummy 来初始化一个实例。

技术

  • 通用

    • TypeScript
    • Zod
    • Prettier & ESlint
    • Vitest
    • Playwright
  • 后端

    • Node.js
    • Express
    • MongoDB
    • Kubernetes
  • 前端

    • React
    • Redux & Redux Toolkit
    • Vite
    • styled-components
    • stylelint

文档

参见 docs 以获取额外文档,包括领域 术语表、事件部署指南、datafiles 指南 以及从过去事件转储中派生的 聚合统计,以及样式指南。

博客文章

支持者

Konsti 开发由以下机构支持

Reaktor logo    Sovellin logo    BrowserStack logo Sentry logo

Konsti 标志由 Ami Koiranen 设计。