🔥 React 프론트엔드 개발자로서 KPI를 쌓을 수 있는 혼자 할 수 있는 프로젝트 아이디어 & 학습 방법을 정리해드릴게요! 🚀
🎯 KPI 목표: 웹페이지 로딩 속도 2초 이하 유지, Lighthouse 성능 점수 90점 이상
✅ "Next.js + React 최적화된 포트폴리오 사이트 만들기"
💡 배울 것:
🎯 KPI 목표: 테스트 커버리지 80% 이상 유지, 코드 리뷰에서 수정 요청 건수 3건 이하
✅ "재사용 가능한 React UI 컴포넌트 라이브러리 만들기"
💡 배울 것:
🎯 KPI 목표: 웹 접근성 점수 80점 이상, 키보드 네비게이션 100% 지원
✅ "웹 접근성을 고려한 블로그 플랫폼 만들기"
💡 배울 것:
🎯 KPI 목표: 신규 기능 배포 후 버그 발생률 5% 미만, 배포 자동화율 90% 이상
✅ "CRUD 기능이 있는 작은 웹 서비스 개발"
💡 배울 것:
🎯 KPI 목표: PR 머지 평균 48시간 이내, 협업 툴 이슈 처리 완료율 90% 이상
✅ "오픈소스 프로젝트 기여"
💡 배울 것:
| KPI | 프로젝트 | 배울 기술 |
|---|---|---|
| 웹 성능 최적화 | Next.js 포트폴리오 | 이미지 최적화, 코드 스플리팅, Lighthouse 분석 |
| 코드 품질 & 유지보수 | UI 컴포넌트 라이브러리 | Storybook, Jest, ESLint, React Testing Library |
| 접근성 & UX | 접근성 강화 블로그 | WAI-ARIA, 키보드 네비게이션, 스크린 리더 테스트 |
| 기능 개발 & 유지보수 | CRUD 웹 앱 (가계부, 메모장 등) | Firebase, CI/CD, 오류 로깅 (Sentry) |
| 협업 & 커뮤니케이션 | 오픈소스 기여 | GitHub 협업, 코드 리뷰, JIRA 사용 |
✅ 단순히 "Todo 앱을 만들었다"라고 하지 말고,
✅ "Firebase를 활용한 CRUD 기능 개발 후, 성능 최적화를 통해 FCP 2초 → 1.2초로 단축"
좋아요! 각 프로젝트마다 해야 할 일, 개념 설명, 학습 자료까지 정리해서 가이드 드릴게요. 🚀
🎯 목표 KPI: 웹 성능 점수 90점 이상, 로딩 속도 2초 이하
npx create-next-app my-portfolio) <Image> 컴포넌트 사용) React.lazy, dynamic import 활용) 📚 추천 학습 자료:
🎯 목표 KPI: 테스트 커버리지 80% 이상, 코드 리뷰 수정 건수 3건 이하
npx sb init) 📚 추천 학습 자료:
🎯 목표 KPI: 접근성 점수 80점 이상, 키보드 네비게이션 100% 지원
tab, enter 키로 모든 UI 요소를 조작 가능하게 만들기. role="button", aria-label 등) 📚 추천 학습 자료:
🎯 목표 KPI: 신규 기능 배포 후 버그 발생률 5% 미만, 배포 자동화율 90% 이상
📚 추천 학습 자료:
🎯 목표 KPI: PR 머지 평균 48시간 이내, 협업 툴 이슈 처리 완료율 90% 이상
good first issue 태그 검색) 📚 추천 학습 자료:
✅ 각 프로젝트에서 배울 내용
| 프로젝트 | 배울 개념 | 관련 KPI |
|---|---|---|
| Next.js 포트폴리오 | Lighthouse, 코드 스플리팅, Lazy Loading | 성능 최적화 |
| UI 컴포넌트 라이브러리 | Jest, React Testing Library, Storybook | 코드 품질 향상 |
| 접근성 강화 블로그 | WAI-ARIA, 키보드 네비게이션, 스크린 리더 테스트 | UX & 접근성 |
| CRUD 웹 앱 | Firebase, CI/CD, Sentry | 기능 개발 & 유지보수 |
| 오픈소스 기여 | GitHub PR, 코드 리뷰, JIRA 사용 | 협업 & 커뮤니케이션 |
Next.js를 활용한 **를 단계별로 진행해 봅시다.
목표는 Lighthouse 성능 점수 90점 이상**을 달성하는 것입니다.
🛠 프로젝트: Next.js 포트폴리오 사이트 만들기
🎯 목표: 웹 성능 최적화 (Lighthouse 성능 점수 90점 이상)
✅ 해야 할 일
1. Next.js 프로젝트 생성
npx create-next-app my-portfolio
cd my-portfolio
npm install
npm run dev # 개발 서버 실행 (http://localhost:3000)
pages/, public/, components/ 등) 📚 추가 학습 자료
✅ 해야 할 일
1. Chrome DevTools에서 Lighthouse 실행
http://localhost:3000 열기 F12 → Lighthouse 탭 클릭 📚 추가 학습 자료
<Image> 컴포넌트 활용)✅ 해야 할 일
1. public/ 폴더에 profile.jpg 등의 이미지 추가
2. 기존 <img> 태그를 Next.js의 <Image> 컴포넌트로 변경
import Image from "next/image";
const Profile = () => (
<div>
<h2>About Me</h2>
<Image src="/profile.jpg" width={300} height={300} alt="My Profile Picture" />
</div>
);
export default Profile;
📚 추가 학습 자료
✅ 해야 할 일
1. React.lazy() 또는 Next.js의 dynamic()을 사용해 동적 로딩 적용
2. 예제: components/HeavyComponent.js 만들기
const HeavyComponent = () => {
return <div>이 컴포넌트는 매우 무겁습니다!</div>;
};
export default HeavyComponent;
pages/index.js에서 동적 로딩 적용
import dynamic from "next/dynamic";
const HeavyComponent = dynamic(() => import("../components/HeavyComponent"), { ssr: false });
export default function Home() {
return (
<div>
<h1>Welcome to My Portfolio</h1>
<HeavyComponent />
</div>
);
}
Lighthouse로 다시 성능 테스트 (불필요한 코드 로딩 방지 확인)
📚 추가 학습 자료
✅ 해야 할 일
1. Intersection Observer API를 사용해 이미지/컴포넌트를 Lazy Load
import dynamic from "next/dynamic";
import { Suspense, lazy } from "react";
const HeavyComponent = dynamic(() => import("../components/HeavyComponent"), { ssr: false });
export default function Home() {
return (
<div>
<h1>Welcome to My Portfolio</h1>
<Suspense fallback={<div>Loading...</div>}>
<HeavyComponent />
</Suspense>
</div>
);
}
📚 추가 학습 자료
✅ 해야 할 일
1. GitHub에 코드 푸시
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin <YOUR_GITHUB_REPO>
git push -u origin main
📚 추가 학습 자료
🚀 모든 단계를 적용한 후 Lighthouse 점수를 다시 측정하면, 성능 점수가 90점 이상으로 올라가 있을 것입니다!