정승교의 포트폴리오 웹사이트입니다. Next.js, TypeScript, Tailwind CSS를 사용하여 구축되었습니다.
- Framework: Next.js 14
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Icons: Lucide React
- Animation: CSS Transitions
Portfolio_V2/
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx # 메인 페이지 (리팩토링됨)
├── components/
│ ├── sections/ # 섹션별 컴포넌트
│ │ ├── IntroSection.tsx
│ │ ├── TechStackSection.tsx
│ │ ├── ProjectsSection.tsx
│ │ ├── ExperienceSection.tsx
│ │ ├── FooterSection.tsx
│ │ └── index.ts
│ ├── ui/ # shadcn/ui 컴포넌트
│ ├── navigation.tsx
│ ├── animated-background.tsx
│ └── theme-provider.tsx
├── data/ # JSON 데이터 파일들
│ ├── techStack.json
│ ├── projects.json
│ ├── experiences.json
│ ├── socialLinks.json
│ └── contactInfo.json
├── lib/
│ ├── data.ts # 데이터 import 및 타입 정의
│ └── utils.ts
└── styles/
└── globals.css
- 모듈화: 각 섹션을 독립적인 컴포넌트로 분리
- 재사용성: Props를 통한 데이터 주입으로 재사용 가능
- 타입 안전성: TypeScript 인터페이스로 타입 정의
- 데이터 분리: JSON 파일로 데이터 관리
- IntroSection: 타입라이터 효과가 있는 인트로 섹션
- TechStackSection: 기술 스택 그리드 레이아웃
- ProjectsSection: 프로젝트 카드 레이아웃
- ExperienceSection: 타임라인 형태의 경력 섹션
- FooterSection: 연락처 및 소셜 링크
lib/data.ts에 타입 정의 추가data/디렉토리에 해당 JSON 파일 생성components/sections/에 새 컴포넌트 생성components/sections/index.ts에 export 추가app/page.tsx에서 컴포넌트 사용
- 기술 스택:
data/techStack.json수정 - 프로젝트:
data/projects.json수정 - 경력:
data/experiences.json수정 - 소셜 링크:
data/socialLinks.json수정 - 연락처:
data/contactInfo.json수정
// techStack.json 예시
[
{
"name": "React",
"icon": "⚛️",
"description": "React 생태계에 대한 고급 숙련도"
}
]
// projects.json 예시
[
{
"title": "프로젝트 제목",
"description": "프로젝트 설명",
"image": "/image.gif",
"tech": ["React", "TypeScript"],
"github": "https://github.com/...",
"live": "https://..."
}
]- Tailwind CSS를 사용한 유틸리티 클래스 기반 스타일링
- 다크/라이트 테마 지원
- 반응형 디자인
- CSS 트랜지션을 통한 부드러운 애니메이션
- 모바일 우선 접근법
- 그리드 시스템을 활용한 레이아웃
- 브레이크포인트별 최적화된 UI
# 의존성 설치
npm install
# 개발 서버 실행
npm run dev
# 빌드
npm run build
# 프로덕션 실행
npm startMIT License