chore: B1 모노레포 스캐폴드 스켈레톤 (yakcloud-packages)

- pnpm+turbo workspace, tsconfig base, .npmrc(Gitea 레지스트리)
- 7 패키지 스텁(ds-sdk 리프 → ui/api-client type-only → client-shell/bff-kit; backup-core 신규)
  package.json 의존으로 DAG·역의존 금지 규칙 강제
- Apache-2.0 LICENSE + NOTICE/LOGO_ATTRIBUTION(벤더 상표 로고 미번들, URL-only)
- .gitea/workflows/ci.yml(build/typecheck/lint · bind-env-drift · secret-scan · standalone-smoke)
- scripts: bind-env-check(check-only 게이트) · standalone-smoke(lazy-require 불변식) 스켈레톤
- apps/ds-web standalone 데모 스텁

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-25 11:02:21 +09:00
commit 4307e1ddb8
37 changed files with 579 additions and 0 deletions

View File

@ -0,0 +1,33 @@
{
"name": "@yakcloud/api-client",
"version": "0.0.0",
"description": "HTTP·폴링(클라 전용): apiGet/apiSend/apiDownload·usePoll. ⛔ 서버코드(respond) 유입 금지.",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"dependencies": {
"@yakcloud/ds-sdk": "workspace:*"
},
"peerDependencies": {
"react": ">=18"
}
}

View File

@ -0,0 +1,4 @@
// @yakcloud/api-client
// HTTP·폴링(클라 전용): apiGet/apiSend/apiDownload·usePoll. ⛔ 서버코드(respond) 유입 금지.
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/api-client";

View File

@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
],
"references": [
{
"path": "../ds-sdk"
}
]
}

View File

@ -0,0 +1,30 @@
{
"name": "@yakcloud/auth-adapter",
"version": "0.0.0",
"description": "인증 어댑터(대부분 신규): IdP 인터페이스, auth.ts 씨앗. ⛔ 클라 패키지 정적 import 금지.",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"peerDependencies": {
"next-auth": ">=5"
}
}

View File

@ -0,0 +1,4 @@
// @yakcloud/auth-adapter
// 인증 어댑터(대부분 신규): IdP 인터페이스, auth.ts 씨앗. ⛔ 클라 패키지 정적 import 금지.
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/auth-adapter";

View File

@ -0,0 +1,10 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
]
}

View File

@ -0,0 +1,30 @@
{
"name": "@yakcloud/backup-core",
"version": "0.0.0",
"description": "백업 계약(신규 전체): 백업대상·스케줄·restore-verification. v1 계약은 M5 랜딩(현재 빈 스켈레톤).",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"dependencies": {
"zod": "^3.23.0"
}
}

View File

@ -0,0 +1,4 @@
// @yakcloud/backup-core
// 백업 계약(신규 전체): 백업대상·스케줄·restore-verification. v1 계약은 M5 랜딩(현재 빈 스켈레톤).
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/backup-core";

View File

@ -0,0 +1,10 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
]
}

View File

@ -0,0 +1,35 @@
{
"name": "@yakcloud/bff-kit",
"version": "0.0.0",
"description": "서버·BFF: respond/session/ratelimit/serialize/handlers. ⛔ api-client 참조 금지.",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"dependencies": {
"zod": "^3.23.0",
"@yakcloud/ds-sdk": "workspace:*",
"@yakcloud/auth-adapter": "workspace:*"
},
"peerDependencies": {
"next": ">=15"
}
}

View File

@ -0,0 +1,4 @@
// @yakcloud/bff-kit
// 서버·BFF: respond/session/ratelimit/serialize/handlers. ⛔ api-client 참조 금지.
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/bff-kit";

View File

@ -0,0 +1,18 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
],
"references": [
{
"path": "../ds-sdk"
},
{
"path": "../auth-adapter"
}
]
}

View File

@ -0,0 +1,35 @@
{
"name": "@yakcloud/client-shell",
"version": "0.0.0",
"description": "9종 데이터소스 웹 클라 셸(신규): 헤더/탭/pane/가드. FileBrowser 는 Phase 1.",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"dependencies": {
"@yakcloud/ui": "workspace:*",
"@yakcloud/api-client": "workspace:*",
"@yakcloud/ds-sdk": "workspace:*"
},
"peerDependencies": {
"react": ">=18"
}
}

View File

@ -0,0 +1,4 @@
// @yakcloud/client-shell
// 9종 데이터소스 웹 클라 셸(신규): 헤더/탭/pane/가드. FileBrowser 는 Phase 1.
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/client-shell";

View File

@ -0,0 +1,21 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
],
"references": [
{
"path": "../ui"
},
{
"path": "../api-client"
},
{
"path": "../ds-sdk"
}
]
}

View File

@ -0,0 +1,30 @@
{
"name": "@yakcloud/ds-sdk",
"version": "0.0.0",
"description": "데이터소스 계약(리프): DTO·Zod 스키마·BIND_ENV SSOT·ApiCode 리터럴. ⛔ Prisma/react/서버 금지.",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"dependencies": {
"zod": "^3.23.0"
}
}

View File

@ -0,0 +1,4 @@
// @yakcloud/ds-sdk
// 데이터소스 계약(리프): DTO·Zod 스키마·BIND_ENV SSOT·ApiCode 리터럴. ⛔ Prisma/react/서버 금지.
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/ds-sdk";

View File

@ -0,0 +1,10 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
]
}

34
packages/ui/package.json Normal file
View File

@ -0,0 +1,34 @@
{
"name": "@yakcloud/ui",
"version": "0.0.0",
"description": "디자인시스템·프리미티브: 토큰·인라인SVG·CardSheet·LineChart(토큰색)·getServiceMeta(logoBase). ⛔ api-client 참조 금지.",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"files": [
"dist"
],
"publishConfig": {
"registry": "https://gitea.yakenator.io/api/packages/yakcloud/npm/"
},
"scripts": {
"build": "tsc -b",
"typecheck": "tsc --noEmit",
"lint": "eslint src",
"test": "echo \"(no tests yet)\""
},
"dependencies": {
"@yakcloud/ds-sdk": "workspace:*"
},
"peerDependencies": {
"react": ">=18",
"react-dom": ">=18"
}
}

4
packages/ui/src/index.ts Normal file
View File

@ -0,0 +1,4 @@
// @yakcloud/ui
// 디자인시스템·프리미티브: 토큰·인라인SVG·CardSheet·LineChart(토큰색)·getServiceMeta(logoBase). ⛔ api-client 참조 금지.
// B1 스켈레톤 — 실제 추출은 후속(scaffold-input.md 판정표 참조).
export const __package = "@yakcloud/ui";

15
packages/ui/tsconfig.json Normal file
View File

@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": [
"src"
],
"references": [
{
"path": "../ds-sdk"
}
]
}