Merge pull request 'docs: 가이드 섹션 순서 재배치 및 콘텐츠 개선' (#6) from develop into main
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 15s

Reviewed-on: #6
This commit is contained in:
htlee 2026-02-15 20:00:46 +09:00
커밋 5ea5797be4
5개의 변경된 파일117개의 추가작업 그리고 38개의 파일을 삭제

파일 보기

@ -8,10 +8,23 @@ export default function InitialSetup() {
<h1 className="text-3xl font-bold text-text-primary mb-2"> </h1>
<p className="text-text-secondary mb-8">
.
SSH Git , .
</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 키 생성 */}
<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">
Gitea에 SSH로 SSH .
</p>
@ -52,7 +65,10 @@ export default function InitialSetup() {
/>
{/* 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
language="bash"
filename="~/.gitconfig"
@ -66,9 +82,14 @@ git config --global core.autocrlf input`}
</Alert>
{/* 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">
Java SDKMAN! JDK를 .
Java JDK .
<strong>SDKMAN!</strong> , jenv, asdf .
<code className="bg-bg-tertiary px-1 rounded">.sdkmanrc</code> .
</p>
<StepGuide
steps={[
@ -112,9 +133,14 @@ sdk use java 17.0.18-amzn`}
/>
{/* 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">
fnm으로 Node.js를 .
Node.js .
<strong>fnm</strong> , nvm, asdf .
<code className="bg-bg-tertiary px-1 rounded">.node-version</code> .
</p>
<StepGuide
steps={[
@ -149,9 +175,14 @@ node --version`}
/>
{/* 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">
AI .
AI .
릿 Claude Code ,
.
</p>
<CodeBlock
language="bash"

파일 보기

@ -6,21 +6,34 @@ export default function NexusUsage() {
<div className="max-w-4xl mx-auto py-12 px-6">
<h1 className="text-3xl font-bold text-text-primary mb-2">Nexus </h1>
<p className="text-text-secondary mb-8">
Maven, Gradle, npm .
Maven, Gradle, npm Nexus .
</p>
<Alert type="info" title="Nexus 주소">
<strong>nexus.gc-si.dev</strong> UI에서 .
</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 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Maven </h2>
<p className="text-text-secondary mb-4">
Maven Nexus를 <code className="bg-bg-tertiary px-1 rounded">~/.m2/settings.xml</code> .
<p className="text-text-secondary mb-2">
릿 Nexus URL이 .
.
</p>
<p className="text-xs text-text-muted mb-4">
. Git에 .
</p>
<CodeBlock
language="xml"
filename="~/.m2/settings.xml"
filename="~/.m2/settings.xml (개인 로컬 파일)"
code={`<settings>
<mirrors>
<mirror>
@ -41,12 +54,13 @@ export default function NexusUsage() {
{/* Gradle */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">Gradle </h2>
<p className="text-text-secondary mb-4">
<code className="bg-bg-tertiary px-1 rounded">build.gradle</code> repositories Nexus를 .
<p className="text-text-secondary mb-2">
<code className="bg-bg-tertiary px-1 rounded">build.gradle</code> repositories ( ),
.
</p>
<CodeBlock
language="groovy"
filename="build.gradle"
filename="build.gradle (프로젝트에 포함)"
code={`repositories {
maven {
url 'https://nexus.gc-si.dev/repository/maven-public/'
@ -58,23 +72,33 @@ export default function NexusUsage() {
}`}
/>
<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>
{/* npm */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">npm </h2>
<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>
<CodeBlock
language="ini"
filename=".npmrc"
filename=".npmrc (프로젝트에 포함 — URL만)"
code={`registry=https://nexus.gc-si.dev/repository/npm-public/
//nexus.gc-si.dev/repository/npm-public/:_auth=\${NPM_AUTH_TOKEN}
always-auth=true`}
/>
<CodeBlock
language="ini"
filename="~/.npmrc (개인 로컬 파일 — 인증)"
code={`//nexus.gc-si.dev/repository/npm-public/:_auth=<Base64 인코딩된 인증 토큰>`}
/>
<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>
{/* 패키지 배포 */}
@ -86,7 +110,7 @@ always-auth=true`}
<h3 className="text-lg font-semibold text-text-primary mt-6 mb-3">Maven </h3>
<CodeBlock
language="xml"
filename="pom.xml"
filename="pom.xml (프로젝트에 포함)"
code={`<distributionManagement>
<repository>
<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>
<CodeBlock
language="json"
filename="package.json"
filename="package.json (프로젝트에 포함)"
code={`{
"publishConfig": {
"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>
<p className="text-text-secondary mb-8">
릿 .
릿 .
</p>
{/* 템플릿 비교 */}
@ -80,7 +81,7 @@ export default function StartingProject() {
content: (
<p>
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-react-ts</code>) .
</p>
@ -97,18 +98,32 @@ cd 새-프로젝트명`}
),
},
{
title: 'Claude Code로 초기화',
title: 'Claude Code로 초기화 (Claude Code 사용 시)',
content: (
<>
<p className="mb-2">Claude Code .</p>
<p className="mb-2">
Claude Code를 .
</p>
<CodeBlock
language="bash"
code={`claude
# :
/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">
, Git hooks, Claude .
Claude Code를 Git hooks는 ,{' '}
<code className="bg-bg-tertiary px-1 rounded">git config core.hooksPath .githooks</code>
.
</p>
</>
),
@ -139,14 +154,15 @@ git push -u origin develop`}
{/* 템플릿 공통 파일 구조 */}
<h2 className="text-xl font-bold text-text-primary mt-10 mb-4">릿 </h2>
<p className="text-text-secondary mb-4">
릿 .
릿 . Git에 .
</p>
<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><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">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">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">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="pl-4"><span className="text-accent">commit-msg</span> Conventional Commits </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 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>
<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>
<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">.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>
</div>
</div>
<Alert type="info" title="워크플로우 업데이트">
.
Claude Code .
<code className="bg-bg-tertiary px-1 rounded ml-1">/sync-team-workflow</code> .
</Alert>

파일 보기

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

파일 보기

@ -4,12 +4,12 @@ export const DEV_NAV: NavItem[] = [
{ path: '/dev/env-intro', label: '개발환경 소개' },
{ path: '/dev/initial-setup', label: '초기 환경 설정' },
{ path: '/dev/gitea-usage', label: 'Gitea 사용법' },
{ path: '/dev/nexus-usage', label: 'Nexus 사용법' },
{ path: '/dev/git-workflow', label: 'Git 워크플로우' },
{ path: '/dev/chat-bot', label: 'Chat 봇 연동' },
{ 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/chat-bot', label: 'Chat 봇 연동' },
{ path: '/dev/design-system', label: '디자인 시스템' },
];
export const ADMIN_NAV: NavItem[] = [