| name | university-web-rewrite-caution |
| description | Safety checklist before touching apps/university-web โ it is a separately deployed Next.js Multi-Zone SSG app that is CURRENTLY MID-REWRITE (desktop "skyscanner-style" layout redesign) with parallel work happening in git worktrees. Use whenever a task touches apps/university-web, the /university/* routes, packages/ui shared layout primitives, or anything under docs/screenshots/*-poc. |
University Web: ๋ฆฌ๋ผ์ดํธ ์ค ์ฃผ์์ฌํญ
์ ์ด ์คํฌ์ด ํ์ํ๊ฐ
apps/university-web์ ๋จ์ํ ํ์ ๋ผ์ฐํธ๊ฐ ์๋๋ผ ๋ณ๋๋ก ๋ฐฐํฌ๋๋ ๋
๋ฆฝ Next.js ์ฑ์ด๊ณ , ์ง๊ธ ๋ฐ์คํฌํฑ ๋ ์ด์์ ์ ๋ฉด ๋ฆฌ๋ผ์ดํธ("skyscanner-layout" ์คํ์ผ)๊ฐ ์งํ ์ค์ด๋ค. ๋ค๋ฅธ ์ฑ(apps/web, apps/admin)๊ณผ ๊ฐ์ ๊ฐ๊ฐ์ผ๋ก ์์ ํ๋ฉด ๋ค์์ด ์ฝ๊ฒ ๊นจ์ง๋ค:
- ์ด๋ฏธ ์งํ ์ค์ธ ๋ฆฌ๋ผ์ดํธ ์์
๊ณผ ์ถฉ๋ํ๋ ์ค๋ณต/์ญํ ์์
- SSG ๋น๋ ์คํจ(๋น ์นดํ๋ก๊ทธ๋ก ์กฐ์ฉํ ๋์ด๊ฐ์ง ์๊ณ ๋น๋ ์์ฒด๊ฐ ์คํจํ๋๋ก ์ค๊ณ๋จ)
apps/web โ apps/university-web ๊ฐ ๋ผ์ฐํธ ์์ ๊ถ ๊ฒฝ๊ณ ์๋ฐ
apps/web๊ณผ apps/university-web์ ๋์ผ ๋ด์ฉ์ผ๋ก ์ค๋ณต ๋ณด๊ด๋ AUTHENTICATION.md/COMPONENTS.md ๋๋ฆฌํํธ
์์
์ ์ฒดํฌ๋ฆฌ์คํธ (์์๋๋ก)
-
์งํ ์ค์ธ ๋ฆฌ๋ผ์ดํธ์ ์ถฉ๋ํ๋์ง ๋จผ์ ํ์ธํ๋ค.
git worktree list
git branch -a --list "*skyscanner*" "*university*"
university ๊ด๋ จ worktree/๋ธ๋์น๊ฐ ์ด๋ฏธ ๋ ์๋ค๋ฉด(์: feat/skyscanner-layout-poc, fix/university-*), ๊ฐ์ ํ๋ฉด์ ๊ฑด๋๋ฆฌ๊ธฐ ์ ์ ํด๋น ๋ธ๋์น์ ์ต์ diff๋ฅผ ํ์ธํด ์ค๋ณต ์์
์ ํผํ๋ค.
-
docs/screenshots/์ ์ด๋ฏธ ์๋ POC ์๋ฃ๋ฅผ ํ์ธํ๋ค.
docs/screenshots/skyscanner-layout-poc/, docs/screenshots/university-skyscanner-layout-poc/์ ๋ฐ์คํฌํฑ(1440x1000)/๋ชจ๋ฐ์ผ(390x844) contact sheet๊ฐ ์๋ค.
- ์ด๋ฏธ ๋ฆฌ๋ทฐ๋ ๋ ์ด์์ ๊ฒฐ์ (์: ๋ํ ๋ชฉ๋ก ๊ฐ์ํ, ๋ชจ๋ฐ์ผ ํ๋จ ๋ค๋น ์ ์ง, ๋ฐ์คํฌํฑ nav ์จ๊น)์ ์์๋ก ๋๋๋ฆฌ์ง ์๋๋ค.
-
๋ผ์ฐํธ ์์ ๊ถ์ docs/university-multizone-deployment.md ๊ธฐ์ค์ผ๋ก ์งํจ๋ค.
/university, /university/search, /university/:homeUniversity, /university/:homeUniversity/:id, /university-static/* โ apps/university-web ์์ (SSG)
/university/score/*, /university/application/* โ apps/web ์์ (์ธ์ฆ/์์ ํ๋ก์ฐ, ์ฌ๊ธฐ๋ ๊ทธ๋๋ก ๋๋ค)
/university/list/:homeUniversity๋ legacy URL์ด๋ฉฐ child route๋ฅผ ์๋ก ๋ง๋ค์ง ์๋๋ค. redirect๋ง ์ ์ง.
- ์นดํ๋ก๊ทธ ์ฑ๊ฒฉ์ ์ university ๋ผ์ฐํธ๋ฅผ ์ค์๋ก
apps/web์ ์ถ๊ฐํ์ง ์๋๋ค.
-
๊ณต์ ๋ฌธ์ ๋๊ธฐํ: AUTHENTICATION.md / COMPONENTS.md
apps/web/AUTHENTICATION.md โก apps/university-web/AUTHENTICATION.md
apps/web/COMPONENTS.md โก apps/university-web/COMPONENTS.md
- ๋์ ํ์ฌ ์์ ํ ๋์ผํ ๋ด์ฉ์ด๋ค. ํ์ชฝ๋ง ๊ณ ์น๋ฉด drift๊ฐ ์๊ธฐ๋ฏ๋ก, ์ปจ๋ฒค์
์ ๋ฐ๊ฟ ๋๋ ๋ ํ์ผ์ ํจ๊ป ์์ ํ๋ค(diff๋ก ํ์ธ:
diff apps/web/COMPONENTS.md apps/university-web/COMPONENTS.md).
-
๋ ์ด์์ ๊ณตํตํ๋ packages/ui๋ก.
- ๋ฆฌ๋ผ์ดํธ ๊ณผ์ ์์ ๊ณตํต ๋ ์ด์์ ํ๋ฆฌ๋ฏธํฐ๋ธ๊ฐ
packages/ui๋ก ์ถ์ถ๋๊ณ ์๋ค (์: packages/ui/src/mobile-hero-detail-shell.tsx).
- university ์ ์ฉ ํ๋ฉด์ด๋ผ๋ web/admin๊ณผ ๊ฒน์น๋ ๋ ์ด์์ ํจํด์ด๋ฉด
apps/university-web ๋ด๋ถ์ ์๋ก ๋ง๋ค์ง ๋ง๊ณ packages/ui์ ์๋์ง ๋จผ์ ํ์ธํ๊ณ , ์์ผ๋ฉด ๊ทธ์ชฝ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ฐ์ ๊ณ ๋ คํ๋ค.
-
SSG ๋ฐ์ดํฐ ํ์นญ ์คํจ๋ CSR ํด๋ฐฑ์ผ๋ก ๋๊ธด๋ค. ๋จ, ์กฐ์ฉํ ๋น ํ๋ฉด์ ๋ง๋ค์ง ์๋๋ค.
- ์นดํ๋ก๊ทธ ๋ชฉ๋ก/์์ธ๋ ์ ์ ์์ฑ์ ์คํจํด๋ ๋น๋๋ฅผ ์ค๋จ์ํค์ง ์๊ณ ํด๋ผ์ด์ธํธ์์ ๊ฐ์ API๋ฅผ ๋ค์ ์กฐํํ๋ค.
getAllUniversitiesSafe() โ ์คํจ ์ throw ๋์ null ๋ฐํ (๋น ๋ฐฐ์ด์ด ์๋๋ผ null ์ธ ์ด์ ๋ "0๊ฑด์ธ ์ ์ ์๋ต"๊ณผ "์กฐํ ์คํจ"๋ฅผ ํธ์ถ๋ถ๊ฐ ๊ตฌ๋ถํด์ผ ํ๊ธฐ ๋๋ฌธ).
[homeUniversity]/page.tsx โ UniversityListCsrFallback, [homeUniversity]/[id]/page.tsx โ UniversityDetailCsrFallback.
[homeUniversity]/[id] ๋ dynamicParams = true. ์ ์ ๋ชฉ๋ก์์ ๋น ์ง ๊ฒฝ๋ก๊ฐ 404 ๊ฐ ๋์ง ์๊ณ ์์ฒญ ์์ ์ ๋ ๋๋๋๋ก ํ๊ธฐ ์ํจ์ด๋ค.
- ์ฌ๊ธฐ์ ์ง์ผ์ผ ํ ์์น์ "๋น ์นดํ๋ก๊ทธ๋ฅผ ์กฐ์ฉํ ์ ์ ์ผ๋ก ๊ตณํ์ง ์๋๋ค"์ด๋ค. ์คํจ๋ฅผ try/catch ๋ก ์ผ์ผ ๋น ๋ฐฐ์ด์ ๊ทธ๋๋ก ๋ ๋ํ๋ ์ฝ๋๋ ์ฌ์ ํ ๊ธ์ง๋ค. ์คํจํ์ผ๋ฉด ๋ฐ๋์ (a) ๋น๋ ๋ก๊ทธ์ ๋จ๊ธฐ๊ณ (b) ํด๋ผ์ด์ธํธ์์ ๋ค์ ์กฐํํ๋ ํด๋ฐฑ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ํด์ผ ํ๋ค.
assertUniversitySsgResponse() ๋ฅผ ์ฐ๋ ๊ธฐ์กด ๊ฒฝ๋ก(getAllUniversities, getUniversitiesByText ๋ฑ)๋ ๊ทธ๋๋ก throw ํ๋ค. ํด๋ฐฑ์ด ํ์ํ ํธ์ถ๋ถ๋ง *Safe ๋ณํ์ ์ด๋ค.
- ๋ฐ์ดํฐ ๊ฐฑ์ ์ ์๋ DB ๊ฐฑ์ ํ university zone ์ฌ๋ฐฐํฌ๋ก ์ฒ๋ฆฌํ๋ค(
/university/revalidate ์ฐธ๊ณ ).
-
ํ๊ฒฝ๋ณ์ ์์กด์ฑ ํ์ธ.
apps/web์ ๋น๋ ์ UNIVERSITY_WEB_DOMAIN์ด ์์ผ๋ฉด ์คํจํ๋๋ก ๋์ด ์๋ค(/university rewrite ๋์์ด ์์ผ๋ฉด catalog๊ฐ 404๊ฐ ๋๊ธฐ ๋๋ฌธ). ์ด ๊ฐ๋๋ฅผ ์ฐํ/์ญ์ ํ์ง ์๋๋ค.
๊ฒ์ฆ
pnpm --filter @solid-connect/university-web run lint:check
pnpm --filter @solid-connect/university-web run typecheck:ci
pnpm --filter @solid-connect/university-web run build
pnpm --filter @solid-connect/web run build
๋ ์ด์์์ ๋ณ๊ฒฝํ๋ค๋ฉด, ๊ธฐ์กด POC์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฐ์คํฌํฑ 1440x1000 / ๋ชจ๋ฐ์ผ 390x844 ์คํฌ๋ฆฐ์ท์ docs/screenshots/<์์
๋ช
>/์ ๋จ๊ธฐ๊ณ PR์ ์ฒจ๋ถํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค (๊ธฐ์กด ์ฌ๋ก: docs/screenshots/university-skyscanner-layout-poc/README.md).
์ฐธ๊ณ ๋ฌธ์
docs/university-multizone-deployment.md โ ๋ผ์ฐํธ ์์ ๊ถ, Vercel ํ๋ก์ ํธ ๋ถ๋ฆฌ, ๋ฐฐํฌ ์ ์ฐจ
docs/screenshots/university-skyscanner-layout-poc/ โ ์งํ ์ค์ธ ๋ฆฌ๋ผ์ดํธ์ ์ต์ ์๊ฐ QA ๊ธฐ์ค
.claude/skills/bruno-codegen-react-query/SKILL.md โ university-web๋ ๊ฐ์ Bruno codegen์ ๊ณต์ ํ๋ฏ๋ก API ๋ณ๊ฒฝ ์ ํจ๊ป ์ฐธ๊ณ