charilezhou 90513e8278 feat: 实现完整的 OIDC Provider 功能
- 后端:基于 node-oidc-provider 实现 OIDC Provider
  - 支持 authorization_code、refresh_token、client_credentials 授权类型
  - Redis adapter 存储会话数据,Prisma adapter 存储持久化数据
  - 客户端管理 CRUD API(创建、更新、删除、重新生成密钥)
  - 交互 API(登录、授权确认、中止)
  - 第一方应用自动跳过授权确认页面
  - 使用 cuid2 生成客户端 ID

- 前端:OIDC 客户端管理界面
  - 客户端列表表格(支持分页、排序)
  - 创建/编辑弹窗(支持所有 OIDC 配置字段)
  - OIDC 交互页面(登录表单、授权确认表单)

- 共享类型:添加 OIDC 相关 TypeScript 类型定义

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 17:22:32 +08:00
2026-01-19 12:36:20 +08:00
2026-01-19 20:46:50 +08:00
2026-01-17 14:09:17 +08:00

Seclusion

基于 Next.js + NestJS 的 Monorepo 项目模板,使用 pnpm workspace + Turborepo 管理。

技术栈

  • 前端: Next.js 15 + React 19 + TypeScript
  • 后端: NestJS 10 + Prisma + Swagger + JWT
  • 工具链: pnpm + Turborepo + ESLint + Prettier

项目结构

seclusion/
├── apps/
│   ├── web/          # Next.js 前端应用
│   └── api/          # NestJS 后端应用
├── packages/
│   ├── shared/       # 共享代码(类型、工具函数)
│   ├── eslint-config/    # ESLint 配置
│   └── typescript-config/ # TypeScript 配置
├── package.json
├── pnpm-workspace.yaml
└── turbo.json

快速开始

环境要求

  • Node.js >= 20.0.0
  • pnpm >= 9.0.0

安装依赖

pnpm install

配置环境变量

# 后端
cp apps/api/.env.example apps/api/.env

# 前端
cp apps/web/.env.example apps/web/.env.local

初始化数据库

# 生成 Prisma Client
pnpm db:generate

# 推送数据库 schema
pnpm db:push

启动开发服务器

# 同时启动前端和后端
pnpm dev

常用命令

# 开发
pnpm dev           # 启动所有应用的开发服务器

# 构建
pnpm build         # 构建所有应用

# 代码质量
pnpm lint          # 运行 ESLint
pnpm format        # 格式化代码

# 数据库
pnpm db:generate   # 生成 Prisma Client
pnpm db:push       # 推送 schema 到数据库
pnpm db:migrate    # 运行数据库迁移

# 清理
pnpm clean         # 清理所有构建产物和 node_modules

API 接口

认证相关

  • POST /auth/register - 用户注册
  • POST /auth/login - 用户登录
  • GET /auth/me - 获取当前用户信息(需认证)

用户管理

  • GET /users - 获取所有用户(需认证)
  • GET /users/:id - 获取指定用户(需认证)
  • PATCH /users/:id - 更新用户信息(需认证)
  • DELETE /users/:id - 删除用户(需认证)

共享包使用

// 导入类型
import type { User, ApiResponse } from '@seclusion/shared';

// 导入工具函数
import { formatDate, generateId } from '@seclusion/shared';
Description
Node全栈项目脚手架
Readme 786 KiB
Languages
TypeScript 93.2%
Handlebars 5.5%
Dockerfile 0.6%
CSS 0.4%
JavaScript 0.3%