포트폴리오 PPTX 내보내기
핵심 원칙: 8년차 시니어 포트폴리오는 AWS 아키텍처 발표 자료 스타일
프로페셔널하고 모던한 디자인, 아키텍처 다이어그램 중심
개요
| 항목 |
내용 |
| 용도 |
Tech Lead/CTO 면접, 화면 공유 발표 |
| 분량 |
10-15 슬라이드 |
| 디자인 |
AWS 공식 스타일 (다크 + 오렌지 액센트) |
| 기술 스택 |
pptxgenjs, sharp, aws-svg-icons |
슬라이드 구성 (10-15장)
┌─────────────────────────────────────────────────────────────────┐
│ Slide 1: Title │
│ - 이름, 직책, 연락처 │
│ - 핵심 태그라인 (기술적 정체성) │
└─────────────────────────────────────────────────────────────────┘
│ Slide 2: Executive Summary (1장) │
│ - Core Competencies (핵심 역량 3-4개) │
│ - 판단 기준 문장 (Anchor Statement) │
│ - 대표 성과 수치 │
└─────────────────────────────────────────────────────────────────┘
│ Slide 3-8: Key Projects (프로젝트당 2장 × 3개 = 6장) │
│ - Page A: 아키텍처 다이어그램 (Before/After, AWS 아이콘) │
│ - Page B: PSR + 기술적 맥락 + 정량적 성과 │
└─────────────────────────────────────────────────────────────────┘
│ Slide 9-10: Technical Decision Archive (2장) │
│ - Decision Log (주요 기술 선택 근거) │
│ - 설계 원칙 (일관된 기술 철학) │
└─────────────────────────────────────────────────────────────────┘
│ Slide 11-12: Organization & Leadership (2장) │
│ - Bus Factor 최소화 │
│ - 협업 사례, 팀 역량 성장 │
└─────────────────────────────────────────────────────────────────┘
│ Slide 13: Technical Skills (1장) │
│ - 기술 스택 + 숙련도 시각화 (프로그레스 바) │
└─────────────────────────────────────────────────────────────────┘
│ Slide 14-15: Contact & Q&A (1-2장) │
│ - 연락처, GitHub, LinkedIn │
│ - Q&A 페이지 (선택) │
└─────────────────────────────────────────────────────────────────┘
디자인 스타일
AWS 공식 스타일
| 요소 |
색상 |
용도 |
| 배경 |
#232F3E (다크 네이비) |
슬라이드 배경 |
| 텍스트 |
#FFFFFF (화이트) |
본문 텍스트 |
| 악센트 |
#FF9900 (오렌지) |
강조, 핵심 수치 |
| 보조 |
#1A73E8 (블루) |
링크, 아이콘 배경 |
타이포그래피
| 요소 |
폰트 |
크기 |
| 제목 |
Arial Bold |
36pt |
| 부제목 |
Arial Bold |
24pt |
| 본문 |
Arial |
14-16pt |
| 메트릭 |
Arial Bold |
28pt |
슬라이드 치수
- 비율: 16:9
- 크기: 10" × 5.625" (pptxgenjs 기본)
사용법
Step 1: 스크립트 실행
# 포트폴리오 PPTX 생성
node scripts/pptx/generate-portfolio.js
Step 2: 출력 확인
output/
└── 윤원희_포트폴리오_YYYY-MM.pptx
Step 3: 슬라이드 검증
스크립트 구조
scripts/pptx/
├── generate-portfolio.js # 메인 생성 스크립트
├── example-aws-icons.js # AWS 아이콘 예제
├── example-modern-architecture.js # 모던 디자인 예제
└── utils/
└── aws-icons.js # AWS 아이콘 로더 (선택)
데이터 소스
원본 데이터
docs/career/
├── my_career_data.md # 원본 데이터 (SSOT)
├── career_portfolio.md # 경력기술서
└── portfolio/
└── portfolio.md # 포트폴리오 (Markdown)
슬라이드별 데이터 매핑
| 슬라이드 |
데이터 소스 |
| Title |
my_career_data.md > 기본 정보 |
| Executive Summary |
my_career_data.md > 핵심 역량 |
| Key Projects |
career_portfolio.md > 프로젝트 |
| Technical Decision |
portfolio.md > Decision Log |
| Tech Skills |
my_career_data.md > 기술 스택 |
AWS 아이콘 사용
설치
npm install aws-svg-icons sharp
아이콘 로드
const sharp = require('sharp');
const path = require('path');
async function loadAwsIcon(category, subfolder, filename) {
const iconPath = path.join(
'node_modules/aws-svg-icons/lib/Architecture-Service-Icons_01312024',
category,
subfolder,
filename
);
const svgBuffer = await fs.promises.readFile(iconPath);
const pngBuffer = await sharp(svgBuffer)
.resize(48, 48)
.png()
.toBuffer();
return `data:image/png;base64,${pngBuffer.toString('base64')}`;
}
주요 아이콘 경로
| 서비스 |
카테고리 |
서브폴더 |
파일명 |
| Lambda |
Arch_Compute |
48 |
Arch_AWS-Lambda_48.svg |
| EC2 |
Arch_Compute |
48 |
Arch_Amazon-EC2_48.svg |
| RDS |
Arch_Database |
48 |
Arch_Amazon-RDS_48.svg |
| DynamoDB |
Arch_Database |
48 |
Arch_Amazon-DynamoDB_48.svg |
| S3 |
Arch_Storage |
48 |
Arch_Amazon-Simple-Storage-Service_48.svg |
| API Gateway |
Arch_App-Integration |
Arch_48 |
Arch_ Amazon-API-Gateway_48.svg |
| Elasticsearch |
Arch_Analytics |
Arch_48 |
Arch_Amazon-Elasticsearch-Service_48.svg |
| CloudWatch |
Arch_Management-Governance |
48 |
Arch_Amazon-CloudWatch_48.svg |
주의: 카테고리마다 서브폴더 이름이 다름 (48 또는 Arch_48)
아키텍처 다이어그램 작성
Before/After 구조
// Before 영역 (왼쪽)
slide.addText('Before', { x: 0.3, y: 0.8, fontSize: 16, bold: true, color: 'FF6B6B' });
slide.addShape('rect', { x: 0.3, y: 1.1, w: 4.5, h: 3.8, fill: { color: '3D4F5F' } });
// After 영역 (오른쪽)
slide.addText('After', { x: 5.2, y: 0.8, fontSize: 16, bold: true, color: '4ECDC4' });
slide.addShape('rect', { x: 5.2, y: 1.1, w: 4.5, h: 3.8, fill: { color: '3D4F5F' } });
컴포넌트 배치
// 아이콘 + 라벨
slide.addImage({ data: icons.lambda, x: 1.0, y: 1.5, w: 0.5, h: 0.5 });
slide.addText('Lambda', { x: 0.8, y: 2.0, w: 1, fontSize: 10, color: 'FFFFFF', align: 'center' });
// 화살표
slide.addShape('line', {
x: 1.5, y: 1.75, w: 0.8, h: 0,
line: { color: 'FF9900', width: 2, endArrowType: 'triangle' }
});
체크리스트
PPTX 생성 전
PPTX 생성 후
발표 준비
파일명 규칙
output/
├── 윤원희_포트폴리오_YYYY-MM.pptx # 기본 포트폴리오
├── 윤원희_포트폴리오_JD_COMPANY.pptx # JD 맞춤형 (선택)
└── 윤원희_포트폴리오_COMPANY.pptx # 회사별 맞춤형 (선택)
관련 스킬
/write-portfolio: Markdown 기반 포트폴리오 (기술 백서)
/svg-diagram: SVG 아키텍처 다이어그램
/export: PDF 내보내기
문제 해결
| 문제 |
해결 |
| AWS 아이콘 안 보임 |
sharp 설치 확인, 아이콘 경로 확인 |
| 한글 깨짐 |
fontFace: 'Malgun Gothic' 지정 |
| 슬라이드 비율 이상 |
layout: 'LAYOUT_16x9' 확인 |
| 이미지 품질 저하 |
sharp resize 크기 조정 (48 → 64) |