Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@
- changed-files:
- any-glob-to-any-file:
- "package.json"
- "package-lock.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "tsconfig*.json"
- "vite.config.ts"
- "eslint.config.*"
Expand All @@ -96,7 +97,8 @@
- changed-files:
- any-glob-to-any-file:
- "package.json"
- "package-lock.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"

"documentation":
- changed-files:
Expand Down
19 changes: 11 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- run: npm ci
- run: npm run lint
- run: npm run type-check
- run: npm run test:post-dates
- run: npm run build
- run: npm run test:sitemap-lastmod
- run: pnpm install --frozen-lockfile
- run: pnpm lint
- run: pnpm type-check
- run: pnpm test:post-dates
- run: pnpm build
- run: pnpm test:sitemap-lastmod
11 changes: 7 additions & 4 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,16 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- run: npm ci
- run: npm run build
- run: pnpm install --frozen-lockfile
- run: pnpm build

- uses: actions/upload-pages-artifact@v3
with:
Expand Down
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Dependencies
node_modules
# Dependencies (all workspace packages; pnpm links these from the global store)
node_modules/

# Build
dist
Expand All @@ -12,6 +12,7 @@ dist-ssr
# Logs
*.log
npm-debug.log*
pnpm-debug.log*

# Editor
.vscode/*
Expand All @@ -27,4 +28,4 @@ npm-debug.log*
.superset

tsconfig.app.tsbuildinfo
tsconfig.node.tsbuildinfo
tsconfig.node.tsbuildinfo
12 changes: 6 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ publishDate: "2025-12-01" # optional - 예약 발행
- 글 상세와 프로젝트 상세 경로는 빌드 시 개별 HTML로 프리렌더
- 클라이언트는 `src/routes.tsx`에서 현재 경로 컴포넌트만 hydration 전에 preload하고, 나머지 라우트는 lazy 유지
- `PostPage` 코드블록은 서버에서 안정적인 `<pre>` fallback을 렌더하고 hydration 후 `CodeBlock`/Shiki를 로드
- hydration 관련 변경 후에는 `npm run build`, `npm run preview`로 `Loading...`, Suspense hidden segment, React hydration warning이 없는지 확인
- hydration 관련 변경 후에는 `pnpm build`, `pnpm preview`로 `Loading...`, Suspense hidden segment, React hydration warning이 없는지 확인

### Page Views
- Google Apps Script API로 GA 데이터 조회
Expand All @@ -151,11 +151,11 @@ publishDate: "2025-12-01" # optional - 예약 발행

## Commands
```bash
npm run dev # 개발 서버 (Vite)
npm run build # 프로덕션 빌드 (tsc + client build + SSR build + hydrated SSG 생성)
npm run preview # 빌드 결과 미리보기
npm run lint # ESLint 실행
npm run type-check # TypeScript 타입 체크
pnpm dev # 개발 서버 (Vite)
pnpm build # 프로덕션 빌드 (tsc + client build + SSR build + hydrated SSG 생성)
pnpm preview # 빌드 결과 미리보기
pnpm lint # ESLint 실행
pnpm type-check # TypeScript 타입 체크
```

## Deployment
Expand Down
12 changes: 6 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ publishDate: "2025-12-01" # optional - 예약 발행
- 글 상세와 프로젝트 상세 경로는 빌드 시 개별 HTML로 프리렌더
- 클라이언트는 `src/routes.tsx`에서 현재 경로 컴포넌트만 hydration 전에 preload하고, 나머지 라우트는 lazy 유지
- `PostPage` 코드블록은 서버에서 안정적인 `<pre>` fallback을 렌더하고 hydration 후 `CodeBlock`/Shiki를 로드
- hydration 관련 변경 후에는 `npm run build`, `npm run preview`로 `Loading...`, Suspense hidden segment, React hydration warning이 없는지 확인
- hydration 관련 변경 후에는 `pnpm build`, `pnpm preview`로 `Loading...`, Suspense hidden segment, React hydration warning이 없는지 확인

### Page Views
- Google Apps Script API로 GA 데이터 조회
Expand All @@ -151,11 +151,11 @@ publishDate: "2025-12-01" # optional - 예약 발행

## Commands
```bash
npm run dev # 개발 서버 (Vite)
npm run build # 프로덕션 빌드 (tsc + client build + SSR build + hydrated SSG 생성)
npm run preview # 빌드 결과 미리보기
npm run lint # ESLint 실행
npm run type-check # TypeScript 타입 체크
pnpm dev # 개발 서버 (Vite)
pnpm build # 프로덕션 빌드 (tsc + client build + SSR build + hydrated SSG 생성)
pnpm preview # 빌드 결과 미리보기
pnpm lint # ESLint 실행
pnpm type-check # TypeScript 타입 체크
```

## Deployment
Expand Down
16 changes: 9 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,21 +101,23 @@ flowchart LR
## 빠른 시작

```bash
npm ci
npm run dev
pnpm install --frozen-lockfile
pnpm dev
```

`packageManager`에 pnpm 11.17.0을 고정합니다. 루트 앱과 `oauth-proxy`는 하나의 workspace/lockfile을 공유하며, 패키지 파일은 머신 전역 pnpm store에서 중복 없이 재사용합니다. 프로젝트별 `node_modules`에는 실행에 필요한 링크만 생성되고 Git에서는 제외됩니다.

개발 서버는 기본적으로 `http://localhost:5173`에서 실행됩니다.

## 명령어

| Command | Description |
| --- | --- |
| `npm run dev` | Vite 개발 서버 실행 |
| `npm run build` | 타입 체크, client/SSR 빌드, hydrated SSG 생성 |
| `npm run preview` | `dist` 결과 미리보기 |
| `npm run lint` | ESLint 검사 |
| `npm run type-check` | TypeScript 타입 검사 |
| `pnpm dev` | Vite 개발 서버 실행 |
| `pnpm build` | 타입 체크, client/SSR 빌드, hydrated SSG 생성 |
| `pnpm preview` | `dist` 결과 미리보기 |
| `pnpm lint` | ESLint 검사 |
| `pnpm type-check` | TypeScript 타입 검사 |

## 글 작성

Expand Down
15 changes: 7 additions & 8 deletions docs/admin.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,14 @@ GitHub OAuth로 로그인한 관리자가 블로그 페이지 안에서 글의 *
## 2. Cloudflare Worker 배포 (`oauth-proxy/`)

```bash
cd oauth-proxy
npm install
npx wrangler login # 최초 1회
pnpm install --frozen-lockfile
pnpm --dir oauth-proxy exec wrangler login # 최초 1회

# 시크릿 주입
npx wrangler secret put GITHUB_CLIENT_ID # 위에서 받은 Client ID
npx wrangler secret put GITHUB_CLIENT_SECRET # 위에서 받은 Client Secret
pnpm --dir oauth-proxy exec wrangler secret put GITHUB_CLIENT_ID # 위에서 받은 Client ID
pnpm --dir oauth-proxy exec wrangler secret put GITHUB_CLIENT_SECRET # 위에서 받은 Client Secret

npm run deploy
pnpm --dir oauth-proxy deploy
```

배포되면 `https://devy-blog-oauth-proxy.<your-subdomain>.workers.dev` 같은 URL이 출력됩니다. 이 URL을 메모하세요.
Expand All @@ -72,7 +71,7 @@ VITE_OAUTH_PROXY_URL=https://devy-blog-oauth-proxy.<your-subdomain>.workers.dev
## 4. 빌드 & 배포

```bash
npm run build # /admin, /admin/callback 정적 셸도 함께 프리렌더됨
pnpm build # /admin, /admin/callback 정적 셸도 함께 프리렌더됨
git commit && git push # main 푸시 → GitHub Actions 배포
```

Expand All @@ -99,6 +98,6 @@ git commit && git push # main 푸시 → GitHub Actions 배포

```bash
# .env.development 에 client_id / 프록시 URL 채우고
npm run dev
pnpm dev
# OAuth App callback에 http://localhost:5173/admin/callback/ 가 등록되어 있어야 함
```
10 changes: 5 additions & 5 deletions oauth-proxy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
## 배포

```bash
npm install
npx wrangler login
npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET
npm run deploy
pnpm install --frozen-lockfile
pnpm exec wrangler login
pnpm exec wrangler secret put GITHUB_CLIENT_ID
pnpm exec wrangler secret put GITHUB_CLIENT_SECRET
pnpm deploy
```

## 바인딩
Expand Down
Loading
Loading