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
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Devy's Blog - Project Guide

## Overview
React + TypeScript + Vite로 구축된 개인 기술 블로그. GitHub Pages 커스텀 도메인(`devy1540.dev`)에 배포.
React + TypeScript + Vite로 구축된 개인 기술 블로그. GitHub Pages 커스텀 도메인(`dev.devy.dev`)에 배포.
블로그 글은 Markdown 파일로 관리하며, 빌드 타임에 `import.meta.glob`으로 로드.

## Tech Stack
Expand Down Expand Up @@ -159,9 +159,9 @@ pnpm type-check # TypeScript 타입 체크
```

## Deployment
- GitHub Pages: `devy1540.dev` (custom domain)
- BASE_URL: `https://devy1540.dev`
- Custom domain: `public/CNAME` = `devy1540.dev`
- GitHub Pages: `dev.devy.dev` (custom domain)
- BASE_URL: `https://dev.devy.dev`
- Custom domain: `public/CNAME` = `dev.devy.dev`
- 댓글: Giscus → `devy1540/devy1540.github.io` repo의 GitHub Discussions

## Code Conventions
Expand Down
8 changes: 4 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Devy's Blog - Project Guide

## Overview
React + TypeScript + Vite로 구축된 개인 기술 블로그. GitHub Pages 커스텀 도메인(`devy1540.dev`)에 배포.
React + TypeScript + Vite로 구축된 개인 기술 블로그. GitHub Pages 커스텀 도메인(`dev.devy.dev`)에 배포.
블로그 글은 Markdown 파일로 관리하며, 빌드 타임에 `import.meta.glob`으로 로드.

## Tech Stack
Expand Down Expand Up @@ -159,9 +159,9 @@ pnpm type-check # TypeScript 타입 체크
```

## Deployment
- GitHub Pages: `devy1540.dev` (custom domain)
- BASE_URL: `https://devy1540.dev`
- Custom domain: `public/CNAME` = `devy1540.dev`
- GitHub Pages: `dev.devy.dev` (custom domain)
- BASE_URL: `https://dev.devy.dev`
- Custom domain: `public/CNAME` = `dev.devy.dev`
- 댓글: Giscus → `devy1540/devy1540.github.io` repo의 GitHub Discussions

## Code Conventions
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div align="center">

<a href="https://devy1540.dev">
<a href="https://dev.devy.dev">
<img src="./public/og-image.png" alt="Devy Archive preview" width="720">
</a>

Expand All @@ -13,15 +13,15 @@ React, TypeScript, Vite로 만든 개인 기술 블로그입니다.<br>

<br>

[![Deploy](https://img.shields.io/github/deployments/devy1540/devy1540.github.io/github-pages?label=github%20pages&logo=github&style=for-the-badge)](https://devy1540.dev)
[![Deploy](https://img.shields.io/github/deployments/devy1540/devy1540.github.io/github-pages?label=github%20pages&logo=github&style=for-the-badge)](https://dev.devy.dev)
[![React](https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=white&style=for-the-badge)](https://react.dev)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.8-3178C6?logo=typescript&logoColor=white&style=for-the-badge)](https://www.typescriptlang.org)
[![Vite](https://img.shields.io/badge/Vite-8-646CFF?logo=vite&logoColor=white&style=for-the-badge)](https://vite.dev)
[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4-06B6D4?logo=tailwindcss&logoColor=white&style=for-the-badge)](https://tailwindcss.com)

[Live Site](https://devy1540.dev) &nbsp;&middot;&nbsp;
[RSS](https://devy1540.dev/rss.xml) &nbsp;&middot;&nbsp;
[Sitemap](https://devy1540.dev/sitemap.xml)
[Live Site](https://dev.devy.dev) &nbsp;&middot;&nbsp;
[RSS](https://dev.devy.dev/rss.xml) &nbsp;&middot;&nbsp;
[Sitemap](https://dev.devy.dev/sitemap.xml)

<br>

Expand Down Expand Up @@ -174,8 +174,8 @@ publishDate: "2025-12-01" # optional, 예약 발행
| Data Viz | Recharts |
| Community | Giscus |
| Analytics | Google Analytics, Google Apps Script API |
| Deploy | GitHub Pages, custom domain `devy1540.dev` |
| Deploy | GitHub Pages, custom domain `dev.devy.dev` |

## 배포

GitHub Pages로 배포하며, 커스텀 도메인은 `public/CNAME`의 `devy1540.dev`를 사용합니다. 빌드 시 `rss.xml`, `sitemap.xml`, route별 prerendered HTML이 함께 생성됩니다.
GitHub Pages로 배포하며, 커스텀 도메인은 `public/CNAME`의 `dev.devy.dev`를 사용합니다. 빌드 시 `rss.xml`, `sitemap.xml`, route별 prerendered HTML이 함께 생성됩니다.
4 changes: 2 additions & 2 deletions content/posts/en/blog-dev-04-search-seo.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ export function useMetaTags({ title, description, url, type = "website" }) {

setMeta("description", description || "Notes from development work.")
setMeta("og:title", title || "Devy's Blog")
setMeta("og:url", `https://devy1540.dev${url || "/"}`)
setMeta("og:url", `https://dev.devy.dev${url || "/"}`)
// ...
}, [title, description, url, type])
}
Expand Down Expand Up @@ -130,7 +130,7 @@ The same Vite plugin generates `rss.xml` at build time. It parses each post's fr
```html
<link rel="alternate" type="application/rss+xml"
title="Devy's Blog RSS"
href="https://devy1540.dev/rss.xml" />
href="https://dev.devy.dev/rss.xml" />
```

---
Expand Down
6 changes: 3 additions & 3 deletions content/posts/en/blog-dev-06-ux-seo.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Add one file: `public/robots.txt`. Vite copies files under `public/` directly in
```text
User-agent: *
Allow: /
Sitemap: https://devy1540.dev/sitemap.xml
Sitemap: https://dev.devy.dev/sitemap.xml
```

- `User-agent: *` - applies to all crawlers
Expand All @@ -110,9 +110,9 @@ Sitemap: https://devy1540.dev/sitemap.xml

After preparing robots.txt and sitemap, register the site in [Google Search Console](https://search.google.com/search-console).

1. Register `https://devy1540.dev` with either URL prefix or domain property.
1. Register `https://dev.devy.dev` with either URL prefix or domain property.
2. Complete ownership verification.
3. Submit `https://devy1540.dev/sitemap.xml` from the Sitemaps menu.
3. Submit `https://dev.devy.dev/sitemap.xml` from the Sitemaps menu.

It can take days or weeks for Google to index the site, so it is normal if it does not appear in search results immediately.

Expand Down
4 changes: 2 additions & 2 deletions content/posts/ko/blog-dev-04-search-seo.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ export function useMetaTags({ title, description, url, type = "website" }) {

setMeta("description", description || "개발하며 배운 것들을 정리하고 공유합니다.")
setMeta("og:title", title || "Devy's Blog")
setMeta("og:url", `https://devy1540.dev${url || "/"}`)
setMeta("og:url", `https://dev.devy.dev${url || "/"}`)
// ...
}, [title, description, url, type])
}
Expand Down Expand Up @@ -130,7 +130,7 @@ function sitemapPlugin() {
```html
<link rel="alternate" type="application/rss+xml"
title="Devy's Blog RSS"
href="https://devy1540.dev/rss.xml" />
href="https://dev.devy.dev/rss.xml" />
```

---
Expand Down
6 changes: 3 additions & 3 deletions content/posts/ko/blog-dev-06-ux-seo.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ const { isMobile, setOpenMobile } = useSidebar()
```
User-agent: *
Allow: /
Sitemap: https://devy1540.dev/sitemap.xml
Sitemap: https://dev.devy.dev/sitemap.xml
```

- `User-agent: *` - 모든 크롤러에 적용
Expand All @@ -108,9 +108,9 @@ Sitemap: https://devy1540.dev/sitemap.xml

robots.txt와 sitemap을 준비한 후, [Google Search Console](https://search.google.com/search-console)에서 사이트를 등록합니다.

1. **URL 접두어** 또는 **도메인 속성** 방식으로 `https://devy1540.dev` 등록
1. **URL 접두어** 또는 **도메인 속성** 방식으로 `https://dev.devy.dev` 등록
2. 소유권 인증 완료
3. Sitemaps 메뉴에서 `https://devy1540.dev/sitemap.xml` 제출
3. Sitemaps 메뉴에서 `https://dev.devy.dev/sitemap.xml` 제출

Google이 색인하는 데 며칠~몇 주 걸릴 수 있으므로 바로 검색 결과에 나타나지 않아도 정상입니다.

Expand Down
8 changes: 4 additions & 4 deletions docs/admin.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ GitHub OAuth로 로그인한 관리자가 블로그 페이지 안에서 글의 *
1. https://github.com/settings/developers → **New OAuth App**
2. 입력:
- **Application name**: `devy-blog-admin` (자유)
- **Homepage URL**: `https://devy1540.dev`
- **Authorization callback URL**: `https://devy1540.dev/admin/callback/`
- **Homepage URL**: `https://dev.devy.dev`
- **Authorization callback URL**: `https://dev.devy.dev/admin/callback/`
- 로컬 테스트도 하려면 **Add another callback URL**로 `http://localhost:5173/admin/callback/` 추가
3. 생성 후 **Client ID** 복사. **Generate a new client secret**으로 secret도 발급(한 번만 표시되니 보관).

Expand All @@ -40,7 +40,7 @@ GitHub OAuth로 로그인한 관리자가 블로그 페이지 안에서 글의 *
이 저장소는 OAuth 토큰 교환 서버를 포함하지 않습니다. 별도로 운영하는 HTTPS API가
`POST { "code": "..." }` 요청을 받아 GitHub OAuth App의 `client_secret`으로 토큰을 교환하고,
성공 시 `{ "access_token": "..." }`을 반환해야 합니다. API에서는 허용 Origin을
`https://devy1540.dev`로 제한하고 `client_secret`을 서버 측 시크릿으로 관리하세요.
`https://dev.devy.dev`로 제한하고 `client_secret`을 서버 측 시크릿으로 관리하세요.

---

Expand Down Expand Up @@ -68,7 +68,7 @@ git commit && git push # main 푸시 → GitHub Actions 배포

## 5. 사용

1. `https://devy1540.dev/admin` 접속 → **GitHub로 로그인**
1. `https://dev.devy.dev/admin` 접속 → **GitHub로 로그인**
2. 인증되면 글 목록이 뜨고, 각 글의 **초안으로 / 발행하기** 버튼으로 토글
3. 토글 시 frontmatter가 커밋되고, 재빌드 후 반영(목록 상단에 안내)
4. 로그인하면 사이드바에도 **관리자** 메뉴가 나타남
Expand Down
12 changes: 6 additions & 6 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@
<meta name="description" content="Devy의 개발과 운영 기록을 문제 해결 중심으로 모아둔 아카이브입니다." />
<meta property="og:title" content="Devy Archive" />
<meta property="og:description" content="Devy의 개발과 운영 기록을 문제 해결 중심으로 모아둔 아카이브입니다." />
<meta property="og:url" content="https://devy1540.dev" />
<meta property="og:url" content="https://dev.devy.dev" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Devy Archive" />
<meta property="og:image" content="https://devy1540.dev/og-image.png?v=20260610" />
<meta property="og:image" content="https://dev.devy.dev/og-image.png?v=20260610" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Devy Archive preview image" />
<meta property="og:locale" content="ko_KR" />
<link rel="canonical" href="https://devy1540.dev" />
<link rel="canonical" href="https://dev.devy.dev" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Devy Archive" />
<meta name="twitter:description" content="Devy의 개발과 운영 기록을 문제 해결 중심으로 모아둔 아카이브입니다." />
<meta name="twitter:image" content="https://devy1540.dev/og-image.png?v=20260610" />
<meta name="twitter:image" content="https://dev.devy.dev/og-image.png?v=20260610" />
<meta name="twitter:image:alt" content="Devy Archive preview image" />
<link rel="alternate" type="application/rss+xml" title="Devy Archive RSS" href="https://devy1540.dev/rss.xml" />
<link rel="sitemap" type="application/xml" title="Sitemap" href="https://devy1540.dev/sitemap.xml" />
<link rel="alternate" type="application/rss+xml" title="Devy Archive RSS" href="https://dev.devy.dev/rss.xml" />
<link rel="sitemap" type="application/xml" title="Sitemap" href="https://dev.devy.dev/sitemap.xml" />
<link rel="stylesheet" as="style" crossorigin href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css" />
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2383130502932429"
crossorigin="anonymous"></script>
Expand Down
2 changes: 1 addition & 1 deletion public/CNAME
Original file line number Diff line number Diff line change
@@ -1 +1 @@
devy1540.dev
dev.devy.dev
Loading
Loading