[Deploy] 배포 - #149
Merged
Merged
Conversation
[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 개선 및 랜딩 진입 번들 최적화
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔗 관련 이슈
🧩 작업 요약 (TL;DR)
🔄 변경 유형
해당되는 항목에 체크해주세요.
📌 주요 변경 사항
🖼️ 스크린샷 / 영상 (선택)
🧠 리뷰 요청 포인트
🚧 미완 / 후속 작업
💬 기타 참고 사항
@copilot 이 PR을 아래 기준으로 검토해주세요:
.github/instructions/capstone.instructions.md 파일을 지침으로 삼으세요.
폴더/파일 위치가 프로젝트 구조 규칙과 일치하는지
컴포넌트가 단일 책임 원칙(SRP)을 지키는지
import 방향이 올바른지 (shared → features 역방향 없음)
명명/케이스가 일관적인지 (PascalCase vs camelCase)
배럴(index.ts) 사용이 현 패턴을 따르는지
응답은 한국어로, 발견된 위반 항목과 추천 구조를 포함해주세요.
리뷰를 달아주세요