Skip to Content
Nextra 4.0 is released πŸŽ‰

πŸ—‚οΈ iamhoonse-ecosystem

test Release publish-github-pages

πŸ“– κ°œμš”

iamhoonse-ecosystem은 μ €μ˜ 개인 포트폴리였, λ¬Έμ„œ μ‚¬μ΄νŠΈ, νŒ¨ν‚€μ§€ 등을 λ°°ν¬ν•˜λŠ” λ™μ‹œμ—, 본인 μ†Œμœ μ˜ μž‘μ—…λ¬Όμ„ κ³΅κ°œν•¨μœΌλ‘œμ¨ λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 자유둭게 μ½”λ“œλ₯Ό μ°Έκ³ ν•˜κ±°λ‚˜ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“  λͺ¨λ…Έλ ˆν¬ ν”„λ‘œμ νŠΈμ—μš”.

πŸ—ƒοΈ μ£Όμš” μ™ΈλΆ€ νŒ¨ν‚€μ§€/도ꡬ μ˜μ‘΄μ„±

이 ν…œν”Œλ¦Ώμ€ 개발 ν™˜κ²½ ꡬ성과 λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•˜κΈ° μœ„ν•΄ μ—¬λŸ¬ μ™ΈλΆ€ νŒ¨ν‚€μ§€μ™€ 도ꡬ에 μ˜μ‘΄ν•˜κ³  μžˆμ–΄μš”. μ•„λž˜λŠ” μ£Όμš” μ˜μ‘΄μ„± λͺ©λ‘μ΄μ—μš”:

μΉ΄ν…Œκ³ λ¦¬νŒ¨ν‚€μ§€/도ꡬ 이름 및 μ„€λͺ…
νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €pnpm
λͺ¨λ…Έλ ˆν¬ 관리turborepo (turbo)
μ–Έμ–΄/트랜슀파일러typescript
포맷터prettier
컀밋/ν›…husky, @commitlint/cli, @commitlint/config-conventional
λ¦°ν„°eslint
ν…ŒμŠ€νŒ…vitest, @testing-library/react, @testing-library/dom, @testing-library/jest-dom, @testing-library/user-event, jsdom
λΉŒλ“œ/λ²ˆλ“€λŸ¬next, @vitejs/plugin-react, vite-tsconfig-paths
UI ν”„λ ˆμž„μ›Œν¬react, react-dom
E2E/μ„±λŠ₯ν…ŒμŠ€νŠΈplaywright, lighthouse, lighthouse-ci
버저닝changesets
λ¬Έμ„œν™”nextra, mdx

πŸ”— ꡬ성 μš”μ†Œ κ°„ 관계도

이 ν…œν”Œλ¦Ώμ€ μ—¬λŸ¬ μ•±κ³Ό νŒ¨ν‚€μ§€λ‘œ ꡬ성돼 μžˆμ–΄μš”. 각 μ•±κ³Ό νŒ¨ν‚€μ§€ κ°„μ˜ κ΄€κ³„λŠ” μ•„λž˜μ˜ λ‹€μ΄μ–΄κ·Έλž¨μ„ μ°Έκ³ ν•΄ μ£Όμ„Έμš”.

πŸ’‘ μ°Έκ³ : 이 λ‹€μ΄μ–΄κ·Έλž¨μ€ Mermaid λ₯Ό μ‚¬μš©ν•΄μ„œ κ·Έλ Έμ–΄μš”. 이 λ„κ΅¬λŠ” ν…μŠ€νŠΈ 기반으둜 λ‹€μ΄μ–΄κ·Έλž¨μ„ 그릴 수 있게 ν•΄μ€˜μš”. μ•„λž˜μ˜ μ½”λ“œλ₯Ό λ³΅μ‚¬ν•΄μ„œ Mermaid Live Editor 에 λΆ™μ—¬λ„£μœΌλ©΄ λ‹€μ΄μ–΄κ·Έλž¨μ„ μ‹œκ°μ μœΌλ‘œ 확인할 수 μžˆμ–΄μš”.

πŸ“¦ ꡬ성 μš”μ†Œ

πŸ–₯️ Apps

이 μ„Ήμ…˜μ€ λ‹€μ–‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”. 각 앱은 νŠΉμ • λͺ©μ μ„ μœ„ν•΄ μ„€κ³„λ˜μ—ˆμœΌλ©°, Next.js와 같은 μ΅œμ‹  기술 μŠ€νƒμ„ ν™œμš©ν•˜κ³  μžˆμ–΄μš”.

이름배포 ν™˜κ²½λ°°ν¬ URLμ„€λͺ…
DocsGitHub Pages https://iamhoonse-dev.github.io/iamhoonse-ecosystem/ko Next.js 및 Nextraλ₯Ό μ‚¬μš©ν•œ λ¬Έμ„œ μ‚¬μ΄νŠΈμ—μš”. 이 λͺ¨λ…Έλ ˆν¬μ— λŒ€ν•œ λ¬Έμ„œλ₯Ό μ œκ³΅ν•΄μš”.
WebNext.js 기반의 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄μ—μš”.
Frontend WorkshopAWS Amplify https://storybook.iamhoonse.devβ€‰μ»΄ν¬λ„ŒνŠΈ κ°œλ°œμ΄λž‘ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ Storybook ν™˜κ²½μ΄μ—μš”.
PortfolioAWS Amplify https://portfolio.iamhoonse.devβ€‰κ°œμΈ 포트폴리였 및 μ†Œκ°œλ₯Ό μœ„ν•œ Next.js 기반 μ•±μ΄μ—μš”.

πŸ“¦ Packages

이 μ„Ήμ…˜μ€ μž¬μ‚¬μš© κ°€λŠ₯ν•œ νŒ¨ν‚€μ§€ λͺ¨μŒμ„ ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”. 각 νŒ¨ν‚€μ§€λŠ” νŠΉμ • κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, λͺ¨λ…Έλ ˆν¬ κ΅¬μ‘°μ—μ„œ λ…λ¦½μ μœΌλ‘œ κ΄€λ¦¬λΌμš”. λ˜ν•œ, 이곳에 μžˆλŠ” νŒ¨ν‚€μ§€λ“€ 쀑 μΌλΆ€λŠ” npm 에 배포될 수 μžˆλ„λ‘ μ„€μ •λ˜μ–΄ μžˆμ–΄μš”.

μ΄λ¦„λ²ˆλ“€ 크기섀λͺ…
Browser Utils NPM VersionNPM Unpacked SizeλΈŒλΌμš°μ € κ΄€λ ¨ μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ λͺ¨μŒμ΄μ—μš”.
ESLint Plugin Sample NPM VersionNPM Unpacked Sizeμƒ˜ν”Œ ESLint ν”ŒλŸ¬κ·ΈμΈμ΄μ—μš”.
HTTP ClientsHTTP μš”μ²­μ„ μ²˜λ¦¬ν•˜λ €κ³  λ§Œλ“  ν΄λΌμ΄μ–ΈνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μ˜ˆμš”.
Node Utils NPM VersionNPM Unpacked SizeNode.js ν™˜κ²½μ—μ„œ μ“Έ 수 μžˆλŠ” μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ λͺ¨μŒμ΄μ—μš”.
React UI NPM VersionNPM Unpacked SizeReact 기반 UI μ»΄ν¬λ„ŒνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μ˜ˆμš”.
React Utils NPM VersionNPM Unpacked SizeReact μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ“Έ 수 μžˆλŠ” μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ λͺ¨μŒμ΄μ—μš”.

🧩 Shared

이 μ„Ήμ…˜μ€ ν”„λ‘œμ νŠΈ μ „λ°˜μ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ λ‚΄λΆ€ νŒ¨ν‚€μ§€λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”. shared 디렉토리에 μžˆλŠ” νŒ¨ν‚€μ§€λ“€μ€ npm에 λ°°ν¬λ˜μ§€ μ•Šκ³ , λ‚΄λΆ€μ μœΌλ‘œλ§Œ μ‚¬μš©λΌμš”.

이름섀λͺ…
Helpersν”„λ‘œμ νŠΈ μ „λ°˜μ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜μ™€ 곡톡 λ‘œμ§μ„ μ œκ³΅ν•˜λŠ” λ‚΄λΆ€ νŒ¨ν‚€μ§€μ˜ˆμš”.

πŸ› οΈ Tools

이 μ„Ήμ…˜μ€ 개발 및 ν…ŒμŠ€νŠΈλ₯Ό μ§€μ›ν•˜λŠ” 도ꡬ듀을 ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”. 각 λ„κ΅¬λŠ” νŠΉμ • μž‘μ—…μ„ μžλ™ν™”ν•˜κ±°λ‚˜ κ°„μ†Œν™”ν•˜λŠ” 데 도움을 μ€˜μš”.

이름섀λͺ…
Playwright WebPlaywright 기반의 μ›Ή ν…ŒμŠ€νŠΈ λ„κ΅¬μ˜ˆμš”.
CLIλͺ…령쀄 μž‘μ—…μ„ μžλ™ν™”ν•˜κ³  ν”„λ‘œμ νŠΈ 관리 및 κ°œλ°œμ„ μ§€μ›ν•˜κΈ° μœ„ν•œ λ„κ΅¬μ˜ˆμš”.
Lighthouse CIμ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯, μ ‘κ·Όμ„±, SEO 등을 μžλ™μœΌλ‘œ μΈ‘μ •ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ λ„κ΅¬μ˜ˆμš”.

βš™οΈ Configs

이 μ„Ήμ…˜μ€ ν”„λ‘œμ νŠΈ μ „λ°˜μ—μ„œ μ‚¬μš©λ˜λŠ” 곡톡 μ„€μ • νŒŒμΌλ“€μ„ ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”. ESLint, TypeScript, Vitest와 같은 λ„κ΅¬λ“€μ˜ 섀정이 ν¬ν•¨λΌμš”.

이름섀λͺ…
ESLint ConfigESLint 섀정을 μœ„ν•œ 곡톡 κ΅¬μ„±μ΄μ—μš”.
Playwright ConfigPlaywright ν…ŒμŠ€νŠΈ μ„€μ •μ΄μ—μš”.
TypeScript ConfigTypeScript 섀정을 μœ„ν•œ 곡톡 κ΅¬μ„±μ΄μ—μš”.
Vitest ConfigVitest ν…ŒμŠ€νŠΈ 섀정을 μœ„ν•œ 곡톡 κ΅¬μ„±μ΄μ—μš”.

πŸ”€ Workflows

이 ν”„λ‘œμ νŠΈλŠ” λ‹€μŒκ³Ό 같은 GitHub Actions Workflowλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”:

πŸ§ͺ Test

test.yml νŒŒμΌμ— μ •μ˜λ˜μ–΄ 있으며, ν”„λ‘œμ νŠΈμ˜ μ£Όμš” ν…ŒμŠ€νŠΈ(μœ λ‹›, E2E, Lighthouse, Storybook λ“±)λ₯Ό ν†΅ν•©μ μœΌλ‘œ μ‹€ν–‰ν•΄μš”. 이 WorkflowλŠ” λ‹€μŒκ³Ό 같은 ν…ŒμŠ€νŠΈλ₯Ό ν¬ν•¨ν•΄μš”:
(πŸ³λŠ” GitHub Actionsμ—μ„œ Docker μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•΄μ„œ μ‹€ν–‰λ˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό μ˜λ―Έν•΄μš”)

  • unit test
  • 🐳 e2e test
  • 🐳 lighthouse test
  • 🐳 storybook test

πŸš€ Release

release.yml νŒŒμΌμ— μ •μ˜λ˜μ–΄ 있으며, Changesetsλ₯Ό 기반으둜 νŒ¨ν‚€μ§€ 배포λ₯Ό μžλ™ν™”ν•΄μš”.

  • 이 WorkflowλŠ” Changesets 봇을 μ‚¬μš©ν•΄μ„œ PR을 μƒμ„±ν•˜κ³ , λ³€κ²½ 사항을 μžλ™μœΌλ‘œ μΆ”μ ν•΄μš”.
  • PR을 μŠΉμΈν•˜λ©΄, λ³€κ²½λœ νŒ¨ν‚€μ§€μ˜ 버전이 μ—…λ°μ΄νŠΈλ˜κ³ , CHANGELOG.md 파일이 μƒμ„±λΌμš”.
  • 그리고 승인된 PR이 λ³‘ν•©λ˜λ©΄μ„œ μ‹€ν–‰λ˜λŠ” Workflow에 μ˜ν•΄, NPM_TOKEN을 μ‚¬μš©ν•˜μ—¬ npm에 νŒ¨ν‚€μ§€κ°€ λ°°ν¬λΌμš”.

πŸ“– Publish GitHub Pages

publish-github-pages.yml νŒŒμΌμ— μ •μ˜λ˜μ–΄ 있으며, docs 앱을 GitHub Pages에 λ°°ν¬ν•΄μš”.

  • 이 WorkflowλŠ” docs μ•±μ˜ λΉŒλ“œλ₯Ό μˆ˜ν–‰ν•˜κ³ , λΉŒλ“œλœ 결과물을 GitHub Pages에 λ°°ν¬ν•΄μš”.
  • GitHub Pages 둜의 배포λ₯Ό μœ„ν•΄μ„œλŠ” λ ˆν¬μ§€ν† λ¦¬μ˜ Settings μ—μ„œ Pagesλ₯Ό ν™œμ„±ν™”ν•΄μ•Ό ν•΄μš”.
  • 배포된 λ¬Έμ„œλŠ” https://USER_ID.github.io/PROJECT_NAME  ν˜•μ‹μ˜ URL둜 μ ‘κ·Όν•  수 μžˆμ–΄μš”.

πŸ“œ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” 개인 포트폴리였, λ¬Έμ„œ μ‚¬μ΄νŠΈ, νŒ¨ν‚€μ§€ λ“± 본인 μ†Œμœ μ˜ 결과물을 κ³΅κ°œν•˜κ³ , λ‹€λ₯Έ μ‚¬λžŒμ΄ 자유둭게 μ½”λ“œλ₯Ό μ°Έκ³ ν•˜κ±°λ‚˜ μ‚¬μš©ν•  수 μžˆλ„λ‘ MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬ν•˜κ³  μžˆμ–΄μš”.


Last updated on