feat: 인터랙티브 랜딩 페이지로 사이트 개편 (정적 프리렌더 + GitHub Pages) - #10
Open
SimYunSup wants to merge 2 commits into
Open
Conversation
Bootstrap + marked.js 해시 라우팅 단일 문서(docs/index.html)를 React + TanStack Start 사이트로 바꾸고, 빌드 때 라우트마다 HTML을 미리 만들어 정적 파일로 배포합니다. 서버는 여전히 없습니다. - 문서 마크다운은 내용 변경 없이 docs/docs/*.md -> src/content/docs/*.md 이동 - 사이트 루트로 나가는 파일은 public/ 로 이동 (CNAME, .nojekyll, sponsors.json, docs/images/*) - 문서 주소가 해시(#faq)에서 경로(/docs/faq)로 바뀌므로, 예전 해시 주소는 홈에서 받아 새 경로로 넘김 (src/lib/legacy-hash.ts) - 파일이 없는 주소는 404.html 이 404 상태로 응답한 뒤 앱이 이어받음 - 워크플로: 후원자/기여자 JSON 을 public/ 에 쓰고, pnpm build 결과인 dist/client 를 Pages 아티팩트로 업로드. sponsors.json, contributors.json 주소는 이전과 동일
워크플로가 매주 생성하는 후원자 목록이 화면에 실제로 나오도록 연결합니다. 빌드가 public/sponsors.json 을 읽어 홈의 후원자 영역과 /docs/sponsor 페이지를 함께 그리므로, 브라우저에서 추가로 받아오는 요청은 없습니다. - src/data/sponsors.ts: 생성 파일을 읽어 가입일 오름차순으로 정리. 비공개 후원자는 이름 없이 인원수만 유지 - sponsor.md 의 <!-- sponsors --> 자리에 같은 데이터를 렌더링 - 커밋된 public/sponsors.json 을 빈 placeholder 대신 현재 배포본으로 교체. API 호출이 실패해도 마지막 배포본 -> 커밋본 순으로 남습니다
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.
무엇을 바꿨나요
식탁보를 소개하는 랜딩 페이지를 새로 만들고, 홈페이지를 그 사이트로 교체합니다. 지금은 Bootstrap + marked.js로
docs/index.html한 장에서 해시 라우팅(#install,#faq)으로 문서를 그리고 있는데, 이를 React + TanStack Start 사이트로 바꾸고 빌드할 때 라우트마다 HTML을 미리 만들어 배포합니다.바뀌어도 그대로인 것부터 적습니다.
dist/client)이고 GitHub Pages가 그대로 서빙합니다.docs/docs/*.md→src/content/docs/*.md이동만 했고 git도 rename으로 인식합니다.CNAME,.nojekyll,sponsors.json,docs/images/*를public/으로 옮겼고,public/아래는 빌드 결과 루트로 그대로 복사됩니다. 즉https://yourtablecloth.app/docs/images/Step1.png,/sponsors.json주소가 그대로입니다.docs/→public/으로 바뀌었습니다.새로 하는 일은 이렇습니다.
/#faq에서/docs/faq로 바뀝니다. 페이지마다 실제 HTML 파일이 있으므로 검색엔진과 SNS 카드가 문서별 제목·설명을 그대로 읽습니다.src/lib/legacy-hash.ts)./#install,/#faq,/#privacy같은 기존 링크가 죽지 않습니다.404.html이 404 상태로 응답한 뒤 앱이 이어받아 404 화면을 그립니다.후원자 목록
기존 워크플로가 만들던
sponsors.json을 사이트가 실제로 읽어서 그리도록 연결했습니다.public/sponsors.json을 쓰고 → 빌드가 그 파일을 읽어 → 홈의 후원자 영역과/docs/sponsor페이지에 같은 목록을 그립니다(src/data/sponsors.ts).+1)로만 표시합니다.public/sponsors.json은 빈 placeholder 대신 현재 배포본으로 교체했습니다. API 호출이 실패하면 기존 로직대로 마지막 배포본을 가져오고, 그마저 실패해도 커밋본이 남아 목록이 0명으로 덮이지 않습니다.JamesIves/github-sponsors-readme-action스텝은 뺐습니다. 이 액션은sponsor.md의<!-- sponsors -->사이에 HTML을 넣는데, 이제 같은 자리를 위 데이터로 직접 그리기 때문에 두 벌이 됩니다. 마커는 그대로 두었으니 되돌리기도 쉽습니다.배포 방식
.github/workflows/deploy.yml의 앞부분(후원자·기여자 목록 생성)은 그대로 두고 뒤에 빌드 단계를 넣었습니다.public/sponsors.json,public/contributors.json에 생성 (기존 로직 그대로, 경로만 변경)pnpm install --frozen-lockfile→pnpm builddist/client를 Pages 아티팩트로 업로드확인한 것
pnpm build→ HTML 10개 생성 (/,/docs, 문서 7개,404.html)index.html, 없으면 404 상태로404.html)으로 서빙해 전 페이지 확인: 4xx 요청 0건, 콘솔 에러 0건/#faq→/docs/faq리다이렉트 동작, 언어 전환 동작, 후원자 아바타 3명 + 익명 1명 표시pnpm exec tsc --noEmit통과, 소스맵은 배포물에 포함되지 않음검토를 부탁드리고 싶은 부분
/docs/*.md원문 주소: 예전 사이트가 런타임에 가져다 쓰던https://yourtablecloth.app/docs/faq.md같은 주소는 더 이상 응답하지 않습니다(문서 페이지 자체는/docs/faq로 정상 제공). 이 주소를 참조하는 곳이 있으면 알려 주시면 함께 내보내겠습니다.src/data/catalog.ts·src/data/community.ts에 읽은 날짜(asOf)와 함께 두었습니다. 사실관계나 표현이 프로젝트 의도와 다르면 고치겠습니다.public/tablecloth.svg는 프로젝트 로고를 수정 없이 사용했고, 출처는 푸터에 적어 두었습니다.로컬에서 확인하시려면
pnpm install && pnpm build && pnpm preview후 http://localhost:3100을 열어 보시면 됩니다.