Skip to content

[Deploy] 배포 - #149

Merged
yeonjin719 merged 8 commits into
mainfrom
develop
Jul 31, 2026
Merged

[Deploy] 배포#149
yeonjin719 merged 8 commits into
mainfrom
develop

Conversation

@yeonjin719

Copy link
Copy Markdown
Member

🔗 관련 이슈

  • closes #이슈번호
  • 참고: #이슈번호

🧩 작업 요약 (TL;DR)

이 PR에서 무엇을 왜 했는지 한 줄로 요약해주세요.

  • 예) TODOLIST 페이지 API 연동 및 UI 상태 분기 처리

🔄 변경 유형

해당되는 항목에 체크해주세요.

  • ✨ Feature
  • 🐞 Bug Fix
  • 🔨 Refactor (기능 변화 없음)
  • 🎨 UI / UX
  • ⚙️ Setting / Infra
  • 🧪 Test
  • 📄 Docs

📌 주요 변경 사항

리뷰어가 집중해서 봐야 할 포인트


🖼️ 스크린샷 / 영상 (선택)

UI 변경이 있다면 꼭 첨부해주세요.

Before After

🧠 리뷰 요청 포인트

리뷰어에게 특히 봐줬으면 하는 부분

  • 로직 설계
  • 상태 관리 방식
  • 네이밍
  • 성능 / 렌더링
  • 기타: ___

⚠️ 체크리스트 (PR 올리기 전)

  • 로컬에서 정상 동작 확인
  • 기존 기능에 영향 없음
  • 불필요한 console.log 제거
  • 린트 / 타입 에러 없음
  • 관련 이슈 연결 완료

🚧 미완 / 후속 작업

이 PR에서 다루지 않은 내용이나 추후 작업

  • N/A

💬 기타 참고 사항

리뷰어가 알면 좋은 맥락, 트레이드오프, 고민 지점

@copilot 이 PR을 아래 기준으로 검토해주세요:

.github/instructions/capstone.instructions.md 파일을 지침으로 삼으세요.
폴더/파일 위치가 프로젝트 구조 규칙과 일치하는지
컴포넌트가 단일 책임 원칙(SRP)을 지키는지
import 방향이 올바른지 (shared → features 역방향 없음)
명명/케이스가 일관적인지 (PascalCase vs camelCase)
배럴(index.ts) 사용이 현 패턴을 따르는지
응답은 한국어로, 발견된 위반 항목과 추천 구조를 포함해주세요.
리뷰를 달아주세요

yujin5959 and others added 8 commits July 29, 2026 18:19
[Feature] 공유 이벤트 소유자 판단 및 추가 API 연결
- index.html에 description/canonical/OG/Twitter/JSON-LD 추가, 무효한 meta name="Calio" 제거
- robots.txt·sitemap.xml을 VITE_SITE_URL 기준으로 빌드 시 생성
- PageMeta로 라우트별 메타 관리, 로그인 이후 화면과 404·로그인은 noindex 처리
- 랜딩 히어로를 정적 셸로 제공해 JS 실행 전에도 본문과 LCP 확보
- 라우트 단위 코드 스플리팅으로 랜딩 진입 JS 1,207kB -> 450kB 감소
- 웹폰트를 Emotion Global에서 index.html로 이동(preconnect/preload/font-display)
- /members/me 응답 전까지 첫 렌더를 막던 초기화 게이트 제거
- Search Console 소유권 확인 파일 추가

Lighthouse(desktop, 로컬 preview): SEO 82 -> 100, Performance 95 -> 98, CLS 0.085 -> 0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- 배포 시 구버전 해시 청크를 삭제하지 않도록 assets sync에서 --delete 제거
- 라우터 최상위에 errorElement 추가, 청크 로드 실패 시 1회 자동 새로고침 (30초 쿨다운으로 루프 방지)
- 로그인/로그아웃으로 교체된 이전 라우터 dispose로 history 구독 해제
- robots.txt Disallow를 OAuth 콜백으로 한정 (noindex 메타와의 신호 충돌 제거)
- PageMeta: 페이지 전환 시 이전 description/og:url 잔류 제거
- 로그인 힌트 키(index.html/useAuthStore) 동기화 주석 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- PR마다 빌드 후 Lighthouse를 3회 실행해 SEO/접근성/스크립트 용량/CLS 회귀를 차단
- 성능 점수는 러너 편차를 고려해 경고로만 처리 (기준선 79, 임계값 0.75)
- README 커버 이미지를 webp로 전환해 1.3MB -> 68KB

측정 기준 (모바일 프리셋): SEO 100 / 접근성 94 / 모범사례 96 / 성능 79
FCP 1.8s · LCP 5.4s · TBT 0ms · CLS 0 · script 147kB · font 598kB

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- shared/utils/dayjs에서 플러그인/ko 로케일을 한 번만 설정하고 앱 전역이 이를 사용
- react-big-calendar localizer를 momentLocalizer -> dayjsLocalizer로 교체
- dayjs에 없는 API 수동 전환: set({...}) -> 체인 setter, moment.min/max -> 비교,
  moment.duration -> add(n, unit), moment.Moment -> Dayjs
- CalendarPage 청크 359kB -> 295kB (gzip 113kB -> 92kB)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
JS 없는 크롤러가 /login 등에서도 랜딩 내용을 보던 문제를 해결하고,
index.html에 손으로 유지하던 히어로 셸 중복을 제거합니다.

- scripts/prerender.mjs: vite ssrLoadModule로 실제 라우트 트리를 렌더해
  라우트별 정적 HTML 생성. 별도 SSR 번들 없이 alias/svgr 설정을 그대로 사용
- entry-server.tsx: createStaticHandler + Emotion 서버 스타일 추출.
  하이드레이션은 하지 않음(로그인 상태에 따라 라우터가 달라짐)
- shared/seo/routeMeta.ts: 라우트 메타 단일 소스. PageMeta와 프리렌더가 공유
- index.html: 수기 히어로 셸 제거. #root의 data-prerender-path와 경로가
  다르면 React 마운트 전에 비움
- infra/cloudfront-spa-router.js: /login -> /login/index.html 재작성 함수
  (연결 전에는 기존처럼 /index.html로 폴백되며 앱 동작에는 영향 없음)

Lighthouse(모바일, 3회 중앙값) 기준선과 동일: SEO 100 / 접근성 94 /
모범사례 96 / 성능 79 / CLS 0 / script 147kB. document 3kB -> 20kB(gzip).
LCP 5.4s는 CDN 웹폰트 598kB가 원인이라 이 변경과 무관하게 유지됩니다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
♻️ [Refactor/#147] SEO 개선 및 랜딩 진입 번들 최적화
@yeonjin719 yeonjin719 self-assigned this Jul 31, 2026
@yeonjin719
yeonjin719 merged commit 05f78f9 into main Jul 31, 2026
1 of 2 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Calio - Frontend Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants