당신의 안정적인 커리어 첫 이륙을 위해서 더 이상 걱정 없는 취준 캘린더

Title.png

서버 주소 : https://goodjobcalendar.com/

📚 아키텍쳐

Untitled

🔧 기술적 의사결정

사용 기술 기술 설명
Redux-thunk 리액트에서 비동기 작업을 처리할 때 사용하기 위해 선택했습니다.
React-redux 예측 가능한 데이터 플로우를 그릴 수 있다는 장점이 있고 전역으로 상태관리를 할 수 있는 라이브러리로 리덕스를 선택했습니다.
react-device-detect 모바일 뷰와 데스트탑 뷰를 구분하여 접속하는 기기에 따라 반응형을 구현하였습니다.
Immer 구조가 복잡한 객체라도 간결한 코드로 불변성을 유지하며 상태를 업데이트하기 위해 사용했습니다.
Axios 비동기로 HTTP통신을 하기 위해 브라우저 호환성이 높은 AXIOS를 사용했습니다.
swiper 슬라이드와 다양한 UI를 지원합니다.
vercel
github-action CI/CD 를 위해 사용하였습니다. Jenkins 등 다른 툴에 비해 간단하게 CI/CD 파이프라인을 구성할 수 있고 Reference도 많아서 커스텀하기에 용이해서 사용하였습니다.
puppeteer 크롤링을 위해서 사용된 라이브러리 입니다. 크롬 기반의 Headless browser 로 클릭이벤트까지 백그라운드에서 가능하기 때문에 최초의 데이터베이스 생성을 위한 실행시 7000개 라는 데이터를 크롤링 과정중 cpu 부하를 줄일 수 있어서 좋았으며,
백그라운드에서 작동할 수 있다는 메리트는 pm2 로 ubuntu 환경에서도 가능하기 때문에 관리자의 별도의 관리없이 자동으로 업데이트 및 유지보수도 가능하기 때문에 저희에게 꼭 필요한 라이브러리라고 생각되서 사용하게 되었습니다.
crontab 앞서 사용된 puppeteer의 자동화를 위한 스케줄러 로서 사용하였습니다. aws ec2 ubuntu 환경에서 편리하게 사용할 수 있었고 node.js 서버의 추가적인 부담이나 라이브러리 패키지 설치 없이 실행되기에 사용했습니다.
Jest 저희가 사용하는 언어인 자바스크립트에 특화된 테스트코드이며 비교적 사용이 간단하며 빠른 테스트를 위해 이전 테스트에서 실패했던 것을 가장 먼저 실행하고, 테스트의 수행 시간을 예측하여 실행 순서를 재배치하는 점이 시간단축이 필요한 저희 프로젝트에 적합하다고 판단되어 사용하였습니다.

🐬 ERD

Untitled.png

Untitled

👋 굿잡 캘린더 의 핵심 기능


01. Home Page - lobby 화면

Welcome.png

Welcome Login-3.png

02. Home Page - 로그인 /회원가입 과정

Untitled

회원가입.png

비밀번호 변경.png

회원가입 완료 페이지.png

03. 캘린더 월간 조회 및 검색 기능

Untitled

Untitled

Untitled

Untitled

04. 맞춤형 추천채용 옵션 설정

Untitled

Untitled

Untitled