docs: 가이드 섹션 순서 재배치 및 콘텐츠 개선 #6

병합
htlee develop 에서 main 로 1 commits 를 머지했습니다 2026-02-15 20:00:46 +09:00
5개의 변경된 파일117개의 추가작업 그리고 38개의 파일을 삭제

파일 보기

@ -8,10 +8,23 @@ export default function InitialSetup() {
<h1 className="text-3xl font-bold text-text-primary mb-2"> </h1> <h1 className="text-3xl font-bold text-text-primary mb-2"> </h1>
<p className="text-text-secondary mb-8"> <p className="text-text-secondary mb-8">
. .
SSH Git , .
</p> </p>
{/* 팀 필수 설정 구분 */}
<div className="bg-accent-soft border border-accent/20 rounded-xl p-4 mb-8">
<h3 className="font-semibold text-accent text-sm mb-2"> vs </h3>
<ul className="text-sm text-text-secondary space-y-1">
<li><span className="text-danger font-medium"></span> SSH , Git (@gcsc.co.kr )</li>
<li><span className="text-info font-medium"></span> JDK/Node.js , Claude Code ( , )</li>
</ul>
</div>
{/* SSH 키 생성 */} {/* SSH 키 생성 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">1. SSH </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">
1. SSH
<span className="ml-2 px-2 py-0.5 bg-danger/10 text-danger rounded text-xs font-medium align-middle"></span>
</h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-4">
Gitea에 SSH로 SSH . Gitea에 SSH로 SSH .
</p> </p>
@ -52,7 +65,10 @@ export default function InitialSetup() {
/> />
{/* Git 설정 */} {/* Git 설정 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">2. Git </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">
2. Git
<span className="ml-2 px-2 py-0.5 bg-danger/10 text-danger rounded text-xs font-medium align-middle"></span>
</h2>
<CodeBlock <CodeBlock
language="bash" language="bash"
filename="~/.gitconfig" filename="~/.gitconfig"
@ -66,9 +82,14 @@ git config --global core.autocrlf input`}
</Alert> </Alert>
{/* SDKMAN */} {/* SDKMAN */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">3. SDKMAN! (JDK )</h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">
3. JDK
<span className="ml-2 px-2 py-0.5 bg-info/10 text-info rounded text-xs font-medium align-middle"></span>
</h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-4">
Java SDKMAN! JDK를 . Java JDK .
<strong>SDKMAN!</strong> , jenv, asdf .
<code className="bg-bg-tertiary px-1 rounded">.sdkmanrc</code> .
</p> </p>
<StepGuide <StepGuide
steps={[ steps={[
@ -112,9 +133,14 @@ sdk use java 17.0.18-amzn`}
/> />
{/* fnm */} {/* fnm */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">4. fnm (Node.js )</h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">
4. Node.js
<span className="ml-2 px-2 py-0.5 bg-info/10 text-info rounded text-xs font-medium align-middle"></span>
</h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-4">
fnm으로 Node.js를 . Node.js .
<strong>fnm</strong> , nvm, asdf .
<code className="bg-bg-tertiary px-1 rounded">.node-version</code> .
</p> </p>
<StepGuide <StepGuide
steps={[ steps={[
@ -149,9 +175,14 @@ node --version`}
/> />
{/* Claude Code */} {/* Claude Code */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">5. Claude Code </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">
5. Claude Code
<span className="ml-2 px-2 py-0.5 bg-info/10 text-info rounded text-xs font-medium align-middle"></span>
</h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-4">
AI . AI .
릿 Claude Code ,
.
</p> </p>
<CodeBlock <CodeBlock
language="bash" language="bash"

파일 보기

@ -6,21 +6,34 @@ export default function NexusUsage() {
<div className="max-w-4xl mx-auto py-12 px-6"> <div className="max-w-4xl mx-auto py-12 px-6">
<h1 className="text-3xl font-bold text-text-primary mb-2">Nexus </h1> <h1 className="text-3xl font-bold text-text-primary mb-2">Nexus </h1>
<p className="text-text-secondary mb-8"> <p className="text-text-secondary mb-8">
Maven, Gradle, npm . Maven, Gradle, npm Nexus .
</p> </p>
<Alert type="info" title="Nexus 주소"> <Alert type="info" title="Nexus 주소">
<strong>nexus.gc-si.dev</strong> UI에서 . <strong>nexus.gc-si.dev</strong> UI에서 .
</Alert> </Alert>
{/* 팀 정책 vs 개인 설정 구분 */}
<div className="bg-accent-soft border border-accent/20 rounded-xl p-4 mt-6 mb-8">
<h3 className="font-semibold text-accent text-sm mb-2"> vs </h3>
<ul className="text-sm text-text-secondary space-y-1">
<li><span className="text-accent font-medium"> </span> Nexus를 . URL은 .</li>
<li><span className="text-text-muted font-medium"> </span> (username/password) . .</li>
</ul>
</div>
{/* Maven */} {/* Maven */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Maven </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Maven </h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-2">
Maven Nexus를 <code className="bg-bg-tertiary px-1 rounded">~/.m2/settings.xml</code> . 릿 Nexus URL이 .
.
</p>
<p className="text-xs text-text-muted mb-4">
. Git에 .
</p> </p>
<CodeBlock <CodeBlock
language="xml" language="xml"
filename="~/.m2/settings.xml" filename="~/.m2/settings.xml (개인 로컬 파일)"
code={`<settings> code={`<settings>
<mirrors> <mirrors>
<mirror> <mirror>
@ -41,12 +54,13 @@ export default function NexusUsage() {
{/* Gradle */} {/* Gradle */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Gradle </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Gradle </h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-2">
<code className="bg-bg-tertiary px-1 rounded">build.gradle</code> repositories Nexus를 . <code className="bg-bg-tertiary px-1 rounded">build.gradle</code> repositories ( ),
.
</p> </p>
<CodeBlock <CodeBlock
language="groovy" language="groovy"
filename="build.gradle" filename="build.gradle (프로젝트에 포함)"
code={`repositories { code={`repositories {
maven { maven {
url 'https://nexus.gc-si.dev/repository/maven-public/' url 'https://nexus.gc-si.dev/repository/maven-public/'
@ -58,23 +72,33 @@ export default function NexusUsage() {
}`} }`}
/> />
<Alert type="info"> <Alert type="info">
<code className="bg-bg-tertiary px-1 rounded">~/.gradle/gradle.properties</code> <code className="bg-bg-tertiary px-1 rounded">nexusUsername</code>/<code className="bg-bg-tertiary px-1 rounded">nexusPassword</code> . <code className="bg-bg-tertiary px-1 rounded">~/.gradle/gradle.properties</code>( ){' '}
<code className="bg-bg-tertiary px-1 rounded">nexusUsername</code>/<code className="bg-bg-tertiary px-1 rounded">nexusPassword</code>
, .
</Alert> </Alert>
{/* npm */} {/* npm */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">npm </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">npm </h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-4">
<code className="bg-bg-tertiary px-1 rounded">.npmrc</code> Nexus . <code className="bg-bg-tertiary px-1 rounded">.npmrc</code> URL만 .
<code className="bg-bg-tertiary px-1 rounded">~/.npmrc</code> .
</p> </p>
<CodeBlock <CodeBlock
language="ini" language="ini"
filename=".npmrc" filename=".npmrc (프로젝트에 포함 — URL만)"
code={`registry=https://nexus.gc-si.dev/repository/npm-public/ code={`registry=https://nexus.gc-si.dev/repository/npm-public/
//nexus.gc-si.dev/repository/npm-public/:_auth=\${NPM_AUTH_TOKEN}
always-auth=true`} always-auth=true`}
/> />
<CodeBlock
language="ini"
filename="~/.npmrc (개인 로컬 파일 — 인증)"
code={`//nexus.gc-si.dev/repository/npm-public/:_auth=<Base64 인코딩된 인증 토큰>`}
/>
<Alert type="warning" title="보안 주의"> <Alert type="warning" title="보안 주의">
<code className="bg-bg-tertiary px-1 rounded">_auth</code> <code className="bg-bg-tertiary px-1 rounded">.npmrc</code> . <code className="bg-bg-tertiary px-1 rounded">~/.npmrc</code>() , <code className="bg-bg-tertiary px-1 rounded">.npmrc</code> URL . <code className="bg-bg-tertiary px-1 rounded">_auth</code> {' '}
<code className="bg-bg-tertiary px-1 rounded">.npmrc</code> .
<code className="bg-bg-tertiary px-1 rounded">~/.npmrc</code> .
.
</Alert> </Alert>
{/* 패키지 배포 */} {/* 패키지 배포 */}
@ -86,7 +110,7 @@ always-auth=true`}
<h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">Maven </h3> <h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">Maven </h3>
<CodeBlock <CodeBlock
language="xml" language="xml"
filename="pom.xml" filename="pom.xml (프로젝트에 포함)"
code={`<distributionManagement> code={`<distributionManagement>
<repository> <repository>
<id>nexus</id> <id>nexus</id>
@ -103,7 +127,7 @@ always-auth=true`}
<h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">npm </h3> <h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">npm </h3>
<CodeBlock <CodeBlock
language="json" language="json"
filename="package.json" filename="package.json (프로젝트에 포함)"
code={`{ code={`{
"publishConfig": { "publishConfig": {
"registry": "https://nexus.gc-si.dev/repository/npm-hosted/" "registry": "https://nexus.gc-si.dev/repository/npm-hosted/"

파일 보기

@ -8,6 +8,7 @@ export default function StartingProject() {
<h1 className="text-3xl font-bold text-text-primary mb-2"> </h1> <h1 className="text-3xl font-bold text-text-primary mb-2"> </h1>
<p className="text-text-secondary mb-8"> <p className="text-text-secondary mb-8">
릿 . 릿 .
릿 .
</p> </p>
{/* 템플릿 비교 */} {/* 템플릿 비교 */}
@ -80,7 +81,7 @@ export default function StartingProject() {
content: ( content: (
<p> <p>
Gitea <strong>gc</strong> <strong> </strong> . Gitea <strong>gc</strong> <strong> </strong> .
<strong> "템플릿에서 생성"</strong> 릿(<code className="bg-bg-tertiary px-1 rounded">template-java-maven</code>,{' '} <strong> &quot;릿 &quot;</strong> 릿(<code className="bg-bg-tertiary px-1 rounded">template-java-maven</code>,{' '}
<code className="bg-bg-tertiary px-1 rounded">template-java-gradle</code>,{' '} <code className="bg-bg-tertiary px-1 rounded">template-java-gradle</code>,{' '}
<code className="bg-bg-tertiary px-1 rounded">template-react-ts</code>) . <code className="bg-bg-tertiary px-1 rounded">template-react-ts</code>) .
</p> </p>
@ -97,18 +98,32 @@ cd 새-프로젝트명`}
), ),
}, },
{ {
title: 'Claude Code로 초기화', title: 'Claude Code로 초기화 (Claude Code 사용 시)',
content: ( content: (
<> <>
<p className="mb-2">Claude Code .</p> <p className="mb-2">
Claude Code를 .
</p>
<CodeBlock <CodeBlock
language="bash" language="bash"
code={`claude code={`claude
# : # :
/init-project`} /init-project`}
/> />
<div className="mt-3 bg-bg-tertiary rounded-lg p-3">
<p className="text-xs text-text-secondary mb-1">
<strong className="text-text-primary">/init-project</strong> :
</p>
<ul className="text-xs text-text-muted space-y-0.5 list-disc list-inside">
<li>Git hooks (<code>.githooks/</code> hooks로 )</li>
<li> </li>
<li>CLAUDE.md </li>
</ul>
</div>
<p className="mt-2 text-text-muted text-xs"> <p className="mt-2 text-text-muted text-xs">
, Git hooks, Claude . Claude Code를 Git hooks는 ,{' '}
<code className="bg-bg-tertiary px-1 rounded">git config core.hooksPath .githooks</code>
.
</p> </p>
</> </>
), ),
@ -139,14 +154,15 @@ git push -u origin develop`}
{/* 템플릿 공통 파일 구조 */} {/* 템플릿 공통 파일 구조 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">릿 </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">릿 </h2>
<p className="text-text-secondary mb-4"> <p className="text-text-secondary mb-4">
릿 . 릿 . Git에 .
</p> </p>
<div className="bg-surface border border-border-default rounded-xl p-5"> <div className="bg-surface border border-border-default rounded-xl p-5">
<div className="font-mono text-sm space-y-1.5 text-text-secondary"> <div className="font-mono text-sm space-y-1.5 text-text-secondary">
<div><span className="text-accent">.claude/</span></div> <div><span className="text-accent">.claude/</span></div>
<div className="pl-4"><span className="text-accent">rules/</span> (code-style, git-workflow, naming, testing, team-policy)</div> <div className="pl-4"><span className="text-accent">rules/</span> (code-style, git-workflow, naming, testing, team-policy)</div>
<div className="pl-4"><span className="text-accent">skills/</span> Claude (create-mr, fix-issue, init-project, sync-team-workflow)</div> <div className="pl-4"><span className="text-accent">skills/</span> Claude (create-mr, fix-issue, init-project, sync-team-workflow)</div>
<div className="pl-4"><span className="text-accent">settings.json</span> Claude </div> <div className="pl-4"><span className="text-accent">settings.json</span> Claude (Git에 )</div>
<div className="pl-4 text-text-muted italic">settings.local.json (.gitignore에 , )</div>
<div className="mt-2"><span className="text-accent">.githooks/</span></div> <div className="mt-2"><span className="text-accent">.githooks/</span></div>
<div className="pl-4"><span className="text-accent">commit-msg</span> Conventional Commits </div> <div className="pl-4"><span className="text-accent">commit-msg</span> Conventional Commits </div>
<div className="pl-4"><span className="text-accent">post-checkout</span> </div> <div className="pl-4"><span className="text-accent">post-checkout</span> </div>
@ -157,6 +173,14 @@ git push -u origin develop`}
</div> </div>
</div> </div>
<div className="bg-accent-soft border border-accent/20 rounded-xl p-4 mt-4 mb-6">
<h4 className="font-semibold text-accent text-sm mb-2">settings.json vs settings.local.json</h4>
<ul className="text-xs text-text-secondary space-y-1">
<li><code className="bg-bg-tertiary px-1 rounded">.claude/settings.json</code> (Git에 ). .</li>
<li><code className="bg-bg-tertiary px-1 rounded">.claude/settings.local.json</code> (.gitignore). . .</li>
</ul>
</div>
{/* 템플릿별 추가 파일 */} {/* 템플릿별 추가 파일 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">릿 </h2> <h2 className="text-xl font-bold text-text-primary mt-10 mb-4">릿 </h2>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4"> <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
@ -178,14 +202,14 @@ git push -u origin develop`}
<h4 className="font-semibold text-text-primary text-sm mb-2">template-react-ts</h4> <h4 className="font-semibold text-text-primary text-sm mb-2">template-react-ts</h4>
<div className="font-mono text-xs space-y-1 text-text-secondary"> <div className="font-mono text-xs space-y-1 text-text-secondary">
<div><code className="bg-bg-tertiary px-1 rounded">.node-version</code> Node.js </div> <div><code className="bg-bg-tertiary px-1 rounded">.node-version</code> Node.js </div>
<div><code className="bg-bg-tertiary px-1 rounded">.npmrc</code> npm </div> <div><code className="bg-bg-tertiary px-1 rounded">.npmrc</code> npm (URL만)</div>
<div><code className="bg-bg-tertiary px-1 rounded">.prettierrc</code> </div> <div><code className="bg-bg-tertiary px-1 rounded">.prettierrc</code> </div>
</div> </div>
</div> </div>
</div> </div>
<Alert type="info" title="워크플로우 업데이트"> <Alert type="info" title="워크플로우 업데이트">
. Claude Code .
<code className="bg-bg-tertiary px-1 rounded ml-1">/sync-team-workflow</code> . <code className="bg-bg-tertiary px-1 rounded ml-1">/sync-team-workflow</code> .
</Alert> </Alert>

파일 보기

@ -6,12 +6,12 @@ const CONTENT_MAP: Record<string, React.LazyExoticComponent<React.ComponentType>
'env-intro': lazy(() => import('../content/DevEnvIntro')), 'env-intro': lazy(() => import('../content/DevEnvIntro')),
'initial-setup': lazy(() => import('../content/InitialSetup')), 'initial-setup': lazy(() => import('../content/InitialSetup')),
'gitea-usage': lazy(() => import('../content/GiteaUsage')), 'gitea-usage': lazy(() => import('../content/GiteaUsage')),
'nexus-usage': lazy(() => import('../content/NexusUsage')),
'git-workflow': lazy(() => import('../content/GitWorkflow')), 'git-workflow': lazy(() => import('../content/GitWorkflow')),
'chat-bot': lazy(() => import('../content/ChatBotIntegration')),
'starting-project': lazy(() => import('../content/StartingProject')), 'starting-project': lazy(() => import('../content/StartingProject')),
'design-system': lazy(() => import('../content/DesignSystem')), 'nexus-usage': lazy(() => import('../content/NexusUsage')),
'ci-cd': lazy(() => import('../content/CiCdGuide')), 'ci-cd': lazy(() => import('../content/CiCdGuide')),
'chat-bot': lazy(() => import('../content/ChatBotIntegration')),
'design-system': lazy(() => import('../content/DesignSystem')),
}; };
export function GuidePage() { export function GuidePage() {

파일 보기

@ -4,12 +4,12 @@ export const DEV_NAV: NavItem[] = [
{ path: '/dev/env-intro', label: '개발환경 소개' }, { path: '/dev/env-intro', label: '개발환경 소개' },
{ path: '/dev/initial-setup', label: '초기 환경 설정' }, { path: '/dev/initial-setup', label: '초기 환경 설정' },
{ path: '/dev/gitea-usage', label: 'Gitea 사용법' }, { path: '/dev/gitea-usage', label: 'Gitea 사용법' },
{ path: '/dev/nexus-usage', label: 'Nexus 사용법' },
{ path: '/dev/git-workflow', label: 'Git 워크플로우' }, { path: '/dev/git-workflow', label: 'Git 워크플로우' },
{ path: '/dev/chat-bot', label: 'Chat 봇 연동' },
{ path: '/dev/starting-project', label: '프로젝트 시작하기' }, { path: '/dev/starting-project', label: '프로젝트 시작하기' },
{ path: '/dev/design-system', label: '디자인 시스템' }, { path: '/dev/nexus-usage', label: 'Nexus 사용법' },
{ path: '/dev/ci-cd', label: 'CI/CD 자동 배포' }, { path: '/dev/ci-cd', label: 'CI/CD 자동 배포' },
{ path: '/dev/chat-bot', label: 'Chat 봇 연동' },
{ path: '/dev/design-system', label: '디자인 시스템' },
]; ];
export const ADMIN_NAV: NavItem[] = [ export const ADMIN_NAV: NavItem[] = [