개인 포트폴리오 대시보드 - 프로젝트 쇼케이스 & GitHub 연동 - 바이브코딩 레시피
중급 JavaScript React

개인 포트폴리오 대시보드 - 프로젝트 쇼케이스 & GitHub 연동

리포지토리명 portfolio-dashboard
조회수 27 1건 제출 3일 전

문제 설명

개인 포트폴리오 대시보드

자신의 프로젝트를 카드 형태로 등록하고, GitHub API와 연동하여 리포지토리 정보를 자동으로 가져오는 포트폴리오 대시보드입니다. 필터링, 정렬, 다크모드, 반응형 디자인을 갖춘 모던 SPA를 구축합니다.

필수 기능

  • 프로젝트 CRUD: 프로젝트 이름, 설명, 기술 스택 태그, 라이브 데모 URL, GitHub 링크 등을 관리
  • GitHub API 연동: GitHub 리포지토리 URL 입력 시 스타 수, 포크 수, 언어 비율을 자동으로 가져오기
  • 기술 스택 태그 시스템: 자동완성 지원 태그 입력 (React, TypeScript, Node.js 등)
  • 필터 & 정렬: 기술 스택별 필터, 최신순/스타순/이름순 정렬
  • 다크모드: 시스템 설정 연동 + 수동 토글
  • 반응형 레이아웃: 그리드/리스트 뷰 전환
  • 통계 대시보드: 총 프로젝트 수, 가장 많이 사용한 기술 스택, GitHub 스타 합계 등

보너스 기능

  • 프로젝트 카드에 스크린샷 업로드 및 이미지 최적화
  • 드래그 앤 드롭으로 프로젝트 순서 변경
  • PDF 이력서 자동 생성 기능
  • Open Graph 메타 태그로 링크 공유 시 미리보기 지원
  • 방문자 통계 (조회수 트래킹)

제약 조건

  • React 19 + Vite 최신 버전 사용
  • TypeScript 필수 적용
  • Tailwind CSS 4.x로 스타일링
  • React Router v7 사용
  • Zustand 또는 Context API로 상태 관리
  • GitHub REST API v3 연동 (인증 토큰 선택)
  • LocalStorage를 활용한 데이터 영속화 (백엔드 없이)
  • ESLint + Prettier 설정 필수

프롬프트 레시피

아래 프롬프트를 순서대로 AI에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.

1
Step 1
React + TypeScript + Vite로 '포트폴리오 대시보드' 프로젝트를 생성해주세요.

요구사항:
1. Vite + React + TypeScript 프로젝트 초기화
2. Tailwind CSS 4.x 설치 및 설정
3. React Router v7 설치 및 기본 라우트 구성:
   - / : 대시보드 (프로젝트 목록)
   - /projects/new : 프로젝트 추가
   - /projects/:id : 프로젝트 상세
   - /projects/:id/edit : 프로젝트 수정
   - /stats : 통계 페이지
4. 기본 레이아웃 컴포넌트 생성:
   - Header: 로고, 네비게이션 링크, 다크모드 토글 버튼
   - Sidebar: 기술 스택 필터 목록
   - Footer: 간단한 저작권 표시
5. 다크모드 구현: localStorage + system preference 감지
6. ESLint + Prettier 설정
7. 프로젝트 타입 정의 (types/index.ts):
   - Project: id, title, description, techStack(string[]), githubUrl, demoUrl, imageUrl, stars, forks, languages, createdAt, updatedAt
   - GitHubRepo: name, description, stargazers_count, forks_count, language, html_url

모든 파일을 생성하고 초기 설정을 완료해주세요.

기대 결과: Vite + React + TypeScript 프로젝트가 생성되고, Tailwind CSS와 React Router가 설정됩니다. 다크모드 토글이 작동하고, 기본 레이아웃이 구성됩니다.

2
Step 2
프로젝트 CRUD 기능과 LocalStorage 기반 데이터 영속화를 구현해주세요.

요구사항:
1. Zustand 스토어 생성 (stores/projectStore.ts):
   - projects 배열 상태 관리
   - addProject, updateProject, deleteProject 액션
   - localStorage에 자동 저장/불러오기 (zustand/middleware persist)
2. 프로젝트 목록 페이지 (pages/Dashboard.tsx):
   - 카드 그리드 레이아웃 (반응형: 모바일 1열, 태블릿 2열, 데스크톱 3열)
   - 각 카드: 프로젝트 이미지, 제목, 설명(2줄 말줄임), 기술 스택 태그(뱃지), GitHub 스타/포크 수
   - 그리드/리스트 뷰 전환 버튼
   - 빈 상태 메시지 ('아직 등록된 프로젝트가 없습니다. 첫 프로젝트를 추가해보세요!')
3. 프로젝트 추가/수정 폼 (pages/ProjectForm.tsx):
   - 프로젝트 이름 (required, maxLength: 100)
   - 설명 (textarea, optional)
   - GitHub 리포지토리 URL (URL 유효성 검사)
   - 라이브 데모 URL (optional)
   - 이미지 URL (optional)
   - 기술 스택 태그 입력: 콤마로 구분, 엔터 키로 추가, 태그 클릭 시 삭제
   - 폼 유효성 검사 에러 메시지 표시
4. 프로젝트 상세 페이지 (pages/ProjectDetail.tsx):
   - 프로젝트 전체 정보 표시
   - 수정/삭제 버튼
   - 삭제 시 확인 모달
5. 공통 컴포넌트:
   - TagInput: 태그 입력 컴포넌트 (자동완성 포함)
   - ConfirmModal: 삭제 확인 모달
   - Toast: 성공/에러 알림

CRUD가 완벽하게 작동하고 localStorage에 데이터가 영속되도록 구현해주세요.

기대 결과: 프로젝트 추가, 조회, 수정, 삭제가 완벽하게 작동합니다. 데이터는 localStorage에 저장되어 새로고침해도 유지됩니다. 태그 입력과 폼 유효성 검사가 작동합니다.

3
Step 3
GitHub API 연동 기능을 구현해주세요.

요구사항:
1. GitHub API 서비스 (services/githubApi.ts):
   - fetchRepoInfo(owner, repo): 리포지토리 기본 정보 가져오기
   - fetchRepoLanguages(owner, repo): 언어 비율 가져오기
   - GitHub URL에서 owner/repo 파싱 함수
   - API 에러 핸들링 (404, rate limit 등)
   - fetch API 사용 (axios 사용 금지)
2. 프로젝트 추가/수정 폼에 GitHub 연동:
   - GitHub URL 입력 후 '정보 가져오기' 버튼 클릭
   - 로딩 스피너 표시 (Tailwind animate-spin 사용)
   - 성공 시: 스타 수, 포크 수, 언어 정보 자동 채우기
   - 실패 시: 에러 메시지 표시 (리포지토리를 찾을 수 없습니다 등)
3. 프로젝트 카드에 GitHub 정보 표시:
   - 스타 아이콘 + 숫자
   - 포크 아이콘 + 숫자
   - 주요 언어 뱃지
4. 프로젝트 상세 페이지에 언어 비율 바:
   - GitHub 스타일 가로 막대 (각 언어별 색상)
   - 각 언어의 퍼센트 표시
5. API Rate Limit 대응:
   - 인증 없이 시간당 60회 제한 안내
   - 선택적으로 Personal Access Token 입력 기능 (설정 페이지)

GitHub API와 자연스럽게 연동되도록 구현해주세요.

기대 결과: GitHub URL 입력 시 리포지토리 정보가 자동으로 가져와집니다. 스타, 포크, 언어 정보가 프로젝트 카드와 상세 페이지에 표시됩니다. API 에러가 적절히 처리됩니다.

4
Step 4
필터링, 정렬, 검색 기능과 통계 대시보드를 구현해주세요.

요구사항:
1. 사이드바 필터 (components/Sidebar.tsx):
   - 모든 프로젝트에서 사용된 기술 스택 태그 자동 수집
   - 태그 클릭 시 해당 기술 스택이 포함된 프로젝트만 필터링
   - 다중 필터 지원 (AND 조건)
   - 활성 필터 뱃지 표시 및 전체 해제 버튼
2. 정렬 기능 (Dashboard 상단):
   - 최신순, 이름순(가나다), GitHub 스타순
   - 오름차순/내림차순 토글
3. 검색 기능:
   - 프로젝트 이름, 설명, 기술 스택에서 키워드 검색
   - 디바운스 적용 (300ms)
   - 검색 결과 하이라이트
4. 통계 페이지 (pages/Stats.tsx):
   - 총 프로젝트 수 카드
   - GitHub 스타 합계 카드
   - 가장 많이 사용한 기술 스택 Top 5 (가로 막대 차트, CSS로 구현)
   - 기술 스택별 프로젝트 수 도넛 차트 (Chart.js 또는 Recharts 사용)
   - 월별 프로젝트 등록 추이 라인 차트
5. URL 쿼리 파라미터 연동:
   - 필터, 정렬, 검색어를 URL에 반영
   - 뒤로가기/앞으로가기 시 상태 유지
   - 링크 공유 시 동일한 필터 상태 재현

사용자가 프로젝트를 효율적으로 탐색할 수 있도록 구현해주세요.

기대 결과: 기술 스택 필터, 정렬, 검색이 모두 작동합니다. 통계 페이지에 차트와 요약 정보가 표시됩니다. URL 쿼리 파라미터로 필터 상태가 공유 가능합니다.

5
Step 5
반응형 디자인 완성, 애니메이션, 접근성 개선 및 최종 마무리를 해주세요.

요구사항:
1. 반응형 디자인 최적화:
   - 모바일: 사이드바를 하단 시트 또는 드로어로 변환
   - 태블릿: 접이식 사이드바
   - 데스크톱: 고정 사이드바
   - 카드 그리드 반응형 조정
2. 애니메이션 추가:
   - 카드 등장 시 fade-in + slide-up 애니메이션
   - 카드 hover 시 그림자 확대 효과
   - 페이지 전환 시 부드러운 전환 효과
   - 태그 추가/삭제 시 애니메이션
   - 뷰 전환(그리드/리스트) 시 부드러운 전환
3. 접근성 (a11y):
   - 키보드 네비게이션 지원
   - aria-label 추가
   - 포커스 스타일링
   - 스크린 리더 지원
4. 데이터 시딩:
   - 샘플 프로젝트 5개 생성하는 시드 데이터 파일 (utils/seedData.ts)
   - 앱 최초 실행 시 자동 시딩 (localStorage 비어있을 때)
5. README.md 작성:
   - 프로젝트 설명 및 스크린샷 안내
   - 설치 방법 (npm install, npm run dev)
   - 주요 기능 목록
   - 기술 스택
   - 프로젝트 구조 트리
6. 성능 최적화:
   - React.memo, useMemo, useCallback 적절히 사용
   - 이미지 lazy loading
   - 코드 스플리팅 (React.lazy + Suspense)

프로덕션 배포 가능한 수준으로 완성해주세요.

기대 결과: 모든 페이지가 모바일에서 완벽하게 작동하고, 애니메이션이 자연스럽습니다. 접근성이 개선되고, 샘플 데이터로 바로 테스트 가능합니다. README 문서가 작성되어 다른 개발자가 쉽게 설치하고 실행할 수 있습니다.

제출된 작품 (1)

로그인 후 제출

포트폴리오 대시보드

리자
리자
3일 전 · Claude Code

개인 프로젝트를 효과적으로 관리하고 전시할 수 있는 GitHub 연동 포트폴리오 대시보드

조회수 32 댓글수 0 추천수 0

댓글 (0)

로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!