#Pabal Web ํ ํ๋ฆฟ
Pabal Web ์ ์ ์ฌ์ดํธ ํ ํ๋ฆฟ ์ฌ์ฉ ์๋ด.
#๊ฐ์
- Next.js 16 (App Router) ์ ์ ์ฌ์ดํธ
- Node.js LTS 18+ ๋ฐ Yarn (
yarn.lock์ฌ์ฉ) - ์ฌ์ฉ์ ๋
ธ์ถ ๋ฐ์ดํฐ๋
public/์ ์์ผ๋ฉฐ, ์ฑ ์ฝ๋๋ ๊ฑด๋๋ฆด ์ผ์ด ๊ฑฐ์ ์์ต๋๋ค
#ํ ํ๋ฆฟ ์ฌ์ฉ
- GitHub ์ ์ฅ์ ํ์ด์ง์์ Use this template ํด๋ฆญ.
- ์ ์ ์ฅ์ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ์์ฑ.
- ์์ฑ๋ ์ ์ฅ์๋ฅผ ๋ก์ปฌ๋ก ํด๋ก .
#ํ๋ก์ ํธ ์ค์
-
์์กด์ฑ ์ค์น:
yarn install -
.env.local.example์.env.local๋ก ๋ณต์ฌํ๊ณ ๊ฐ ์ค์ :NEXT_PUBLIC_SITE_URL=http://localhost:3000 GOOGLE_INDEXING_URL=https://labs.quartz.best NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION=YOUR_GOOGLE_SITE_VERIFICATION_CODE_HERE -
์์ ์์ ๋ณต์ฌ:
cp -r examples/public/* public/public/products/[slug]/์์ ์ ํ ์์ (์ค์ , ๋ก์ผ์ผ, ์คํฌ๋ฆฐ์ท, ์์ด์ฝ)์ ์ ๋ฐ์ดํธํ์ธ์.public/site/์์ ๊ฐ๋ฐ์/์กฐ์ง ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ์ธ์.web:og-generate์คํฌ๋ฆฝํธ๊ฐ OG ์ด๋ฏธ์ง๋ฅผ ์๋ ์์ฑํฉ๋๋ค.
-
MCP ์ค์ (์ ํ ์ฌํญ์ด์ง๋ง ๊ถ์ฅ):
- Pabal MCP: Configure Credentials ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ์ธ์ฆ์ ์ค์ ํ๊ณ , ๊ธฐ์กด ์คํ ์ด ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด
apps-init๋ฅผ ์คํํ์ธ์. - Pabal Web MCP:
init-project๋ฅผ ์คํํด ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ ์์ฑํ์ธ์.
- Pabal MCP: Configure Credentials ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ์ธ์ฆ์ ์ค์ ํ๊ณ , ๊ธฐ์กด ์คํ ์ด ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด
#๋น๋ ๋ฐ ๋ฐฐํฌ
- ์ ์ ๋น๋(
out/):yarn build - ๋น๋ ๊ฒฐ๊ณผ ๋ก์ปฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ:
yarn start - Vercel ๋ฐฐํฌ:
yarn build๊ฒฐ๊ณผ๊ฐout/์ธ์ง ํ์ธํ๊ณNEXT_PUBLIC_SITE_URL์ ์ค์ ํ์ธ์. ์ธ๋ฑ์ฑ์ด ํ์ํ๋ฉดGOOGLE_INDEXING_URL์ ์ถ๊ฐํ์ธ์. - ๊ธฐํ ์ ์ ํธ์คํธ(S3/CloudFront, Netlify ๋ฑ):
out/๋๋ ํฐ๋ฆฌ๋ฅผ ์ ๋ก๋ํ์ธ์. - ๋ฐฐํฌ ํ ๋ผ์ฐํธ ํ์ธ:
/{product}/{product}/privacy-policy/{product}/terms-of-use
#Google ์ฌ์ดํธ ์ธ์ฆ
- Google Search Console์์ ์ธ์ฆ ์ฝ๋๋ฅผ ๋ฐ๊ธ๋ฐ์ต๋๋ค.
.env.local์ ์ถ๊ฐํฉ๋๋ค:NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION=your_verification_code_hereseo:index-google์คํฌ๋ฆฝํธ๊ฐ ์ด ๊ฐ์ ์ฌ์ฉํด URL์ ์ ์ถํฉ๋๋ค.
#ํ ํ๋ฆฟ๊ณผ ๋๊ธฐํ
- ํ
ํ๋ฆฟ ์ ์ฅ์๋ฅผ upstream์ผ๋ก ์ถ๊ฐ(1ํ):
git remote add upstream https://github.com/quartz-labs-dev/pabal-web.git - ์
๋ฐ์ดํธ ๊ฐ์ ธ์ค๊ธฐ:
git fetch upstream - ๋ณํฉ ๋๋ ๋ฆฌ๋ฒ ์ด์ค:
git merge upstream/main --allow-unrelated-histories # ๋๋ git rebase upstream/main --allow-unrelated-histories - origin์ ํธ์:
git push origin main