韩洋 6a1282a73b feat:联调分组接口 1 month ago
..
docs eaeecc6e48 feat:日志接口调试 1 month ago
public 8821fc1c0d 修改模型列表与logo 1 month ago
scripts 4710453739 feat:初始版本提交 1 month ago
src 6a1282a73b feat:联调分组接口 1 month ago
.gitignore 4710453739 feat:初始版本提交 1 month ago
.node-version 4710453739 feat:初始版本提交 1 month ago
.npmrc 4710453739 feat:初始版本提交 1 month ago
.oxfmtrc.json 4710453739 feat:初始版本提交 1 month ago
.oxlintrc.json 4710453739 feat:初始版本提交 1 month ago
AGENTS.md 4710453739 feat:初始版本提交 1 month ago
README.md c6599e17ae fix:1.修改更具用户拥有的第一个菜单权限显示,404等异常页面返回主页也根据权限动态显示;用户管理中root管理员编辑做特殊处理,其余用户管理去除去除分组和配额 1 month ago
components.json 4710453739 feat:初始版本提交 1 month ago
cz.yaml 4710453739 feat:初始版本提交 1 month ago
dist.zip c6599e17ae fix:1.修改更具用户拥有的第一个菜单权限显示,404等异常页面返回主页也根据权限动态显示;用户管理中root管理员编辑做特殊处理,其余用户管理去除去除分组和配额 1 month ago
index.html d146338e55 feat:修改系统默认的系统名称,增加readme说明文件,将代理地址提取到.env 1 month ago
knip.config.ts 4710453739 feat:初始版本提交 1 month ago
netlify.toml 4710453739 feat:初始版本提交 1 month ago
package.json d146338e55 feat:修改系统默认的系统名称,增加readme说明文件,将代理地址提取到.env 1 month ago
rsbuild.config.ts d146338e55 feat:修改系统默认的系统名称,增加readme说明文件,将代理地址提取到.env 1 month ago
tsconfig.app.json 4710453739 feat:初始版本提交 1 month ago
tsconfig.json 4710453739 feat:初始版本提交 1 month ago
tsconfig.node.json 4710453739 feat:初始版本提交 1 month ago

README.md

Linwit Token Web

Linwit Token Web 是一个面向 AI Token 平台的前端单页应用,提供门户展示、用户控制台、模型浏览、渠道管理、API Key 管理、钱包充值、个人资料、Playground 调试以及系统设置等能力。

项目基于 React、TypeScript 与 Rsbuild 构建,采用文件路由、服务端状态管理、统一 API 请求封装和功能模块化目录结构,适合作为 AI 网关、模型分发、Token 计费与平台管理类系统的前端入口。

项目特点

  • 基于 React 19 与 TypeScript,使用函数式组件和 Hooks 开发。
  • 使用 TanStack Router 文件路由,路由结构清晰,支持认证守卫与嵌套路由布局。
  • 使用 TanStack Query 管理服务端状态,统一处理缓存、请求状态与数据刷新。
  • 使用 Axios 封装统一 API 请求实例,支持 Cookie 会话、请求去重与错误处理。
  • 使用 Zustand 管理本地认证状态和必要的客户端状态。
  • 使用 Tailwind CSS、Base UI、Hugeicons、Lucide 等构建现代化界面。
  • 支持 i18next 国际化,适合多语言平台扩展。
  • 使用 Rsbuild / Rspack 构建,开发体验和生产构建性能较好。

技术栈

分类 技术
基础框架 React 19、TypeScript
构建工具 Rsbuild、Rspack
路由 TanStack Router
服务端状态 TanStack Query
本地状态 Zustand
请求库 Axios
UI 与样式 Tailwind CSS、Base UI、shadcn 风格组件、Hugeicons、Lucide、Sonner
表单与校验 React Hook Form、Zod、@hookform/resolvers
表格与虚拟列表 TanStack Table、TanStack Virtual
国际化 i18next、react-i18next、i18next-browser-languagedetector
图表 VisActor VChart、React VChart、Recharts
Markdown / 代码展示 marked、shiki、CodeMirror、KaTeX
工程质量 oxlint、oxfmt、knip

目录结构

default
├── public                 # 静态资源,如 logo、favicon、支付图标等
├── scripts                # 工程脚本,如格式化、版权、国际化同步
├── src                    # 应用源码
│   ├── components         # 通用组件、布局组件、UI 基础组件
│   ├── context            # 全局 React Context
│   ├── features           # 业务功能模块
│   ├── hooks              # 通用 Hooks
│   ├── i18n               # 国际化配置与语言资源
│   ├── lib                # API、工具函数、通用逻辑
│   ├── routes             # TanStack Router 文件路由
│   ├── stores             # Zustand 状态管理
│   ├── styles             # 全局样式
│   ├── main.tsx           # 应用入口
│   └── routeTree.gen.ts   # 路由树生成文件
├── index.html             # HTML 模板
├── package.json           # 项目依赖与脚本
├── rsbuild.config.ts      # Rsbuild 构建配置
└── tsconfig*.json         # TypeScript 配置

主要模块

  • src/routes:应用路由入口,包含公开页面、认证页面和受保护后台页面。
  • src/routes/_authenticated:需要登录后访问的后台路由分组。
  • src/features/auth:登录、注册、找回密码等认证相关功能。
  • src/features/dashboard:控制台与概览相关功能。
  • src/features/models:模型展示、模型分组与模型相关页面。
  • src/features/channels:渠道管理相关功能。
  • src/features/keys:API Key 管理相关功能。
  • src/features/pricing:价格展示与计费相关页面。
  • src/features/profile:用户资料、账户设置与个人中心。
  • src/features/playground:模型调用体验与调试页面。
  • src/features/system-settings:系统配置与管理后台相关能力。

应用入口与运行流程

  1. 浏览器加载 index.html,通过 #root 挂载 React 应用。
  2. src/main.tsx 创建 QueryClient 和 TanStack Router。
  3. 路由使用 src/routeTree.gen.ts 中生成的路由树。
  4. 应用外层注入 Query、主题、字体方向、路由等全局 Provider。
  5. 根路由检查系统初始化状态,未完成初始化时进入 /setup
  6. 受保护路由会检查本地认证状态,并通过 /api/user/self 验证当前会话。

API 请求说明

统一请求封装位于 src/lib/api.ts

  • 默认使用同源接口,baseURL 为空。
  • 开启 withCredentials,用于携带 Cookie / Session。
  • 对并发 GET 请求进行去重,减少重复接口调用。
  • 统一处理业务错误、登录过期、401 状态和 toast 提示。
  • 基础接口如获取当前用户、系统状态等也集中在该文件中。

开发环境接口代理在 rsbuild.config.ts 中配置,默认代理路径包括:

  • /api
  • /mj
  • /pg

本地开发后端地址通过 .env 中的 VITE_REACT_APP_SERVER_URL 配置;未配置时默认使用 http://localhost:3000

常用命令

项目使用 Bun 作为包管理器。

bun install

启动开发环境:

bun run dev

生产构建:

bun run build

类型检查:

bun run typecheck

代码检查:

bun run lint

格式化:

bun run format

同步国际化资源:

bun run i18n:sync

预览生产构建:

bun run preview

开发约定

  • 页面路由优先放在 src/routes,具体业务实现放在对应的 src/features/<feature> 中。
  • 通用组件放在 src/components,业务组件优先放在所属 feature 内。
  • 请求接口优先复用 src/lib/api.ts 中的统一 Axios 实例。
  • 服务端数据获取优先使用 TanStack Query。
  • 本地全局状态优先使用 Zustand,并按功能拆分 store。
  • 面向用户的文案应接入 i18n,避免直接写死在组件中。
  • 新增 TypeScript / TSX 代码后应执行类型检查和 lint 检查。
  • 不要手动修改 src/routeTree.gen.ts,它由 TanStack Router 插件生成。

构建与部署

  • 构建入口:src/main.tsx
  • HTML 模板:index.html
  • 构建配置:rsbuild.config.ts
  • 生产输出目录:dist
  • SPA 部署时需要将前端路由回退到 index.html

仓库中已包含 netlify.toml,用于在 Netlify 部署时将所有路径回退到 /index.html

适合阅读的关键文件

  • src/main.tsx:理解应用启动和全局 Provider。
  • src/routes/__root.tsx:理解根路由、初始化检查和全局错误边界。
  • src/routes/_authenticated/route.tsx:理解登录态校验和后台路由保护。
  • src/components/layout/components/authenticated-layout.tsx:理解后台整体布局。
  • src/lib/api.ts:理解接口请求、错误处理和会话逻辑。
  • src/stores/auth-store.ts:理解认证状态在前端如何保存与恢复。
  • rsbuild.config.ts:理解构建入口、路径别名、代理和生产构建配置。