본문 바로가기
IT개발/개인프로젝트

[AutoSume 프로젝트] React를 활용한 프론트엔드 개발 진행중

by 시간기억자 2025. 4. 18.
반응형

1. 프로젝트 개요

AutoSume는 채용 공고 분석과 자소서 자동 생성을 목표로 하는 개인 풀스택 프로젝트이다. React, TypeScript, Spring Boot, ChatGPT API를 활용해 개발 중이며, 취업 준비생을 위한 도구로 기획했다. 이 포스트는 프로젝트 구조, 기술 스택, 개발 과정, 학습 내용을 기록한다.

1.1 주요 기능

  • 자소서 생성: 사용자 입력을 ChatGPT API로 처리해 자소서 답변 생성.
  • 자소서 관리: 생성된 자소서를 목록으로 저장, 조회, 삭제.
  • 다운로드: 자소서를 PDF 또는 텍스트로 내보내기.
  • 인증: 로그인/회원가입으로 사용자별 자소서 관리.
  • 크롤링(예정): 채용 공고 데이터 수집 및 기술 트렌드 분석.

1.2 목표

  • 풀스택 개발 학습: 프론트엔드, 백엔드, AI 연동 경험.
  • 포트폴리오 제작: GitHub와 Notion으로 결과물 정리.
  • AI 활용: ChatGPT API로 실용적인 기능 구현.

2. 기술 스택 및 구조

프로젝트는 프론트엔드, 백엔드, 크롤링 서버로 구성된다. 각 기술의 역할과 학습 포인트를 정리한다.

2.1 프론트엔드

  • React: 컴포넌트 기반 UI 구현. Write.tsx, List.tsx, View.tsx 등 페이지 구성.
  • TypeScript: 변수와 API 응답 타입 정의로 코드 안정성 향상.
  • Tailwind CSS: 클래스 기반 스타일링으로 반응형 디자인 구현.
  • 학습 포인트:
    • useState, useEffect로 상태 관리와 비동기 요청 처리.
    • React Router로 페이지 간 이동.
    • Tailwind CSS로 모바일/데스크톱 반응형 레이아웃.

2.2 백엔드

  • Spring Boot: REST API 제공. /api/resumes, /api/users 등 엔드포인트 구현.
  • JPA: MySQL과 엔티티 매핑으로 데이터 관리.
  • Spring Security: JWT로 API 인증 및 보호.
  • 학습 포인트:
    • 컨트롤러, 서비스, 리포지토리 구조 이해.
    • JPA로 엔티티 관계(@OneToMany) 설정.
    • JWT 토큰 발급 및 검증.

2.3 크롤링 서버 (예정)

  • Python: 채용 공고 데이터 수집.
  • FastAPI: 크롤링 데이터를 REST API로 제공.
  • BeautifulSoup: HTML 파싱으로 제목, 기술 스택 추출.
  • 학습 포인트:
    • HTML/CSS 셀렉터로 데이터 추출.
    • 비동기 크롤링(asyncio)으로 성능 최적화.
    • FastAPI와 Spring Boot 간 REST 통신.

2.4 ChatGPT API

  • 역할: 사용자 입력을 기반으로 자소서 답변 생성.
  • 학습 포인트:
    • 프롬프트 설계: "지원 동기 200자 작성" 같은 지시.
    • API 호출: axios/chat/completions 요청.
    • 에러 처리: 네트워크 오류, 키 문제 대응.

2.5 기술 구조도

[Client: React + TypeScript + Tailwind]
     |
     |   🔐 로그인, 자소서 생성, 공고 조회 요청 (JWT 포함)
     ▼
[Backend: Spring Boot + JPA + Spring Security]
     |
     ├─ 📂 REST API 제공 (User, JobPosting, Resume 등)
     ├─ 🔐 JWT 인증 & OAuth2 로그인(GitHub optional)
     ├─ 🧠 GPT API 호출 (OpenAI)
     └─ 🗃 MySQL 연동 (JPA + Entity 기반)
     ▲
     |
[Python Crawling Server: FastAPI + BeautifulSoup]
     └─ 채용공고 크롤링 요청 수신
         (키워드 기반 수집 + DB 저장 via REST)

3. 개발 진행 상황

3.1 기획 및 설계

  • ERD: User, Resume, JobPosting, UserProfile, ResumeLog 테이블 설계.
  • API 명세: /api/resumes (CRUD), /api/users (인증) 등 정의.
  • 와이어프레임: 메인, 자소서 생성, 목록, 상세 보기 페이지 설계.

3.2 프론트엔드 구현

  • MainLayout.tsx: 헤더, 푸터 포함 공통 레이아웃.
  • Home.tsx: 서비스 소개와 CTA 버튼.
  • Write.tsx: 사용자 입력(textarea)과 자소서 생성 버튼.
  • // src/pages/Write.tsx import { useState } from 'react'; export default function Write() { const [userInput, setUserInput] = useState(''); return ( <textarea value={userInput} onChange={(e) => setUserInput(e.target.value)} placeholder="경험, 스킬 등을 입력" /> ); }
  • 진행 예정: List.tsx, View.tsx, Export.tsx 구현.

3.3 ChatGPT API 연동

  • 현재 Write.tsx에서 사용자 입력을 처리하는 UI 준비 완료.
  • 다음 단계로 ChatGPT API 호출 예정.
  • 계획:
    • .env로 API 키 관리.
    • axios/chat/completions 요청.
    • 프롬프트: "사용자 입력 기반으로 지원 동기, 강점 작성".

3.4 백엔드 준비

  • Spring Boot 프로젝트 설정 예정(Gradle, MySQL).
  • 계획:
    • User, Resume 엔티티 정의.
    • /api/resumes API로 자소서 CRUD 구현.
    • JWT 인증 추가.

3.5 크롤링 (예정)

  • 원티드, 사람인 등 채용 사이트 크롤링 계획.
  • FastAPI로 데이터 제공, Spring Boot와 연동 예정.

4. 학습 기록

4.1 React

  • useState로 사용자 입력 관리.
  • useEffect로 API 호출 준비.
  • 문제 해결: textarea 입력이 실시간 반영 안 되는 이슈 → onChange 이벤트 추가.

4.2 TypeScript

  • 인터페이스로 Props와 API 응답 타입 정의.
  • 학습 포인트: any 대신 구체적 타입 사용으로 에러 감소.

4.3 Tailwind CSS

  • flex, grid로 반응형 레이아웃 구현.
  • : sm:, md: 접두사로 모바일/데스크톱 스타일 분리.

4.4 ChatGPT API

  • 프롬프트 설계 중요성 학습.
  • 계획: API 호출 에러 처리와 응답 최적화.

4.5 Spring Boot (예정)

  • REST API와 JPA 학습 예정.
  • 목표: 컨트롤러, 서비스, 리포지토리 구조 이해.

5. 향후 계획

  • 프론트엔드: List.tsx, View.tsx, 다운로드 기능 구현.
  • 백엔드: Spring Boot로 API와 인증 구축.
  • 크롤링: Python 서버로 채용 공고 데이터 수집.
  • 배포: Vercel(프론트엔드), Heroku(백엔드).
  • 포트폴리오: GitHub README, Notion에 상세 기록.

 

반응형

댓글