Skip to content

Repository files navigation

Algryth

Algryth 是面向 ACM 社团的活动、积分、排名、权限和章程知识库平台。仓库采用 pnpm workspace 管理,包含前端应用、后端 API 和前后端共享契约包。

工作区

  • apps/web: React + Vite 前端,提供登录、社员管理、活动运营、积分治理、公告和章程问答等页面。
  • apps/api: NestJS API 服务,负责认证、权限、业务数据、文件存储、邮件、章程 RAG 和 OpenAPI 文档。
  • packages/shared: 前后端共享的 Zod schema、枚举和 TypeScript 类型。
  • infra: 本地开发依赖服务,包含 PostgreSQL、Redis、MinIO、etcd 和 Milvus 的 Docker Compose 配置。

技术栈

  • pnpm workspace + TypeScript
  • React 19、Vite、TanStack Router、TanStack Query、Tailwind CSS、shadcn/Base UI
  • NestJS、Drizzle ORM、PostgreSQL、CASL、Zod、JWT
  • Milvus、OpenAI 兼容接口、MinIO/DogeCloud OSS、Resend

本地启动

需要 Node.js、pnpm 和 Docker。仓库提供 mise.toml,也可以用 mise 安装运行时。

pnpm install
cp infra/.env.example infra/.env
cp apps/api/.env.example apps/api/.env

确认 apps/api/.envDATABASE_URL 的端口和 infra/.envPOSTGRES_PORT 一致,然后启动本地依赖:

docker compose --env-file infra/.env -f infra/docker-compose.yml up -d
pnpm db:migrate
pnpm seed
pnpm dev

默认访问地址:

  • Web: http://localhost:5173
  • API: http://localhost:3000/api/v1
  • API 文档: http://localhost:3000/docs

如需修改前端请求地址,在 apps/web/.env 中设置:

VITE_API_BASE_URL=http://localhost:3000/api/v1

生产环境的 CAS 跳转需要同时配置公网地址:

  • 前端设置 VITE_API_BASE_URL 指向后端 API,例如 https://api.example.com/api/v1
  • 后端设置 API_PUBLIC_BASE_URL 为后端 API 公网根地址,例如 https://api.example.com/api/v1
  • 后端设置 WEB_PUBLIC_BASE_URL 为前端公网根地址,例如 https://www.example.com
  • 后端 CORS_ORIGIN 仍用于允许前端访问 API,通常填前端公网根地址。

常用命令

  • pnpm dev: 并行启动所有 workspace 的开发服务。
  • pnpm dev:web: 只启动前端。
  • pnpm dev:api: 只启动后端。
  • pnpm build: 构建所有有 build 脚本的包。
  • pnpm lint: 检查所有有 lint 脚本的包。
  • pnpm db:generate: 生成 Drizzle migration。
  • pnpm db:migrate: 执行数据库迁移。
  • pnpm db:studio: 打开 Drizzle Studio。
  • pnpm seed: 写入基础种子数据。
  • pnpm seed:test-data: 写入测试数据。

生产部署模板

  • API 镜像构建文件在 apps/api/Dockerfile
  • 服务器侧 Docker Compose、环境变量示例、部署脚本和备份脚本在 infra/production

About

ACM club activity, points, ranking and AI assistant platform.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages