ResumeLog는 개발자의 이력서 작성을 위한 GraphQL 기반 백엔드 API입니다. 일상적인 개발 활동을 기록하고, 이를 바탕으로 맞춤형 이력서를 생성할 수 있는 플랫폼입니다.
- Frontend: recode-web
- Backend: recode-backend (현재 프로젝트)
- Framework: NestJS 11.x
- Database: PostgreSQL with TypeORM
- API: GraphQL (Apollo Server)
- Authentication: JWT + Passport
- Language: TypeScript
- Container: Docker & Docker Compose
- 회원가입/로그인: 이메일 인증 기반 회원가입
- JWT 인증: Access Token 기반 인증 시스템
- 프로필 정보: 이름, 연락처, GitHub, 블로그 등
- 학력 사항: 학교명, 전공, 학위, 재학 기간
- 경력 사항: 회사명, 직무, 업무 요약, 재직 기간
- 프로젝트: 프로젝트명, 설명, 기술 스택, 역할
- 자격증: 자격증명, 발급기관, 취득일, 만료일
- 활동 내역: 활동명, 기관, 기간, 설명
- 일일 개발 기록: 태그별 개발 활동 기록
- 프로젝트 연동: 특정 프로젝트와 연결된 로그 관리
- AI 기반 추천: ChatGPT를 활용한 회사별, 직무별 이력서 내용 추천
- 사용량 제한: 일일/월간 사용량 관리
- 역할 기반 접근 제어: 사용자/관리자 권한 분리
- 필드별 권한 관리: GraphQL 필드 레벨 보안
- 쿼리 최적화: 자동 JOIN 및 SELECT 최적화
- 트랜잭션 관리: 데이터 일관성 보장
📁 Schema
├── 👤 UserProfile (프로필)
├── 🎓 Education (학력)
├── 💼 Career (경력)
├── 🚀 Project (프로젝트)
├── 🏆 Certificate (자격증)
├── 📁 Activity (활동)
├── 📝 DailyLog (일일 로그)
├── 📊 DailyLogUsage (사용량)
└── 📥 ResumeDownload (다운로드)
- GraphQL Code First: TypeScript 코드로 스키마 자동 생성
- 동적 쿼리 최적화: 요청된 필드만 조회하여 성능 최적화
- 실시간 스키마: GraphQL Playground에서 실시간 API 문서 확인
- 배치 처리: 대량 데이터 처리 지원
# 의존성 설치
npm install
# 개발 서버 실행
npm run start:dev
# Docker 환경 실행
npm run docker:development:up
# 데이터베이스 마이그레이션
npm run migration:run- 쿼리 최적화: TypeORM Query Builder 활용
- 인덱싱: 데이터베이스 인덱스 최적화
- 페이지네이션: 대용량 데이터 효율적 처리
- LLM 토큰 최적화:
project_daily_log_view로 ChatGPT 요청 데이터 정리하여 토큰 사용량 절약
- 자동화 테스트: Jest 기반 단위/통합 테스트
- 코드 품질: ESLint, Prettier 코드 스타일 관리
- Git Hooks: Husky를 통한 커밋 전 검증
- Docker 배포: 컨테이너화된 배포 환경
- GraphQL Playground:
http://localhost:3000/graphql - 실시간 스키마: 자동 생성되는 GraphQL 스키마
- 인증 헤더:
Authorization: Bearer <JWT_TOKEN>
- 회원탈퇴 정책 미정: Soft Delete vs Hard Delete 정책 수립 필요
- 데이터 정리 로직: 사용자 삭제 시 관련 데이터 정리 전략 보완 필요
- GraphQL 활용도 부족: REST API처럼 고정된 쿼리 구조, 동적 필터링 기능 미흡
- GPT 부하 테스트: ChatGPT API 통신 부분의 동시 요청 처리 및 응답 시간 테스트 부재