Skip to content

Daily1Hour/PickMe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PickMe-Logo

면접 기록 서비스 PICK ME

PickMe

목차

  1. 프로젝트 소개
  2. 팀 소개
  3. 주요 기능
  4. CI/CD
  5. 인프라
  6. 기술 스택

프로젝트 소개

PICK ME는 취업 준비생들이 면접을 효율적으로 준비하고, 면접 과정을 체계적으로 관리할 수 있도록 돕는 웹 서비스입니다.

이 서비스는 면접 일정, 기업 분석, 예상 질문·답변 정리, 면접 회고를 하나의 플랫폼에서 제공하여, 사용자가 면접 준비 전반을 통합적으로 관리할 수 있게 합니다.
일정 관리와 정보 정리를 넘어, 취업 준비생들이 면접 성공률을 높일 수 있도록 체계적이고 효율적인 준비를 지원하는 목표를 가집니다.

프로젝트 개요

프로젝트 개요

타겟층

기업 입사를 목표로 면접 전형을 전략적이고 체계적으로 준비하고 싶은 취업 준비생

문제 정의

현재 취업 준비생은 면접 일정을 별도의 앱이나 다이어리로 관리하고, 기업 분석 및 예상 질문·답변 등을 흩어져서 정리합니다. 이로 인해 면접 준비가 비효율적입니다. 또한, 면접 결과나 회고를 기록하고 분석할 툴이 부족해 전략적인 준비가 어렵습니다. 기존의 채용 플랫폼은 공고 검색과 지원에 집중되어 있어 면접 준비에 필요한 일정, 자료, 회고 관리 기능이 부족합니다.

이를 해결하기 위해 면접 일정 관리, 기업 분석, 예상 질문 정리, 면접 회고까지 한 곳에서 체계적으로 관리할 수 있는 문서 기반 면접 준비 플랫폼을 개발합니다.

기대 효과

  • 효율적인 면접 준비: 일정, 기업 분석, 예상 질문 등을 한 곳에서 관리하여 준비 시간을 절약할 수 있다.
  • 데이터 기반 전략 수립: 면접 회고 및 피드백을 분석하여 개인 맞춤형 면접 전략을 세운다.
  • 정보 접근성 향상: 취업 준비생이 필요한 정보를 보다 체계적이고 쉽게 정리할 수 있어, 준비 과정의 혼란을 줄인다.

팀 소개

김아영 김영진 안진수 정원철
A0 Youngjin Jinsoo Woncheol

주요 기능

PICK ME는 취업 준비생들이 면접 준비를 효율적으로 할 수 있도록 여러 핵심 기능을 제공합니다.

  1. 예상 질문과 그에 대한 답변을 기록하며, 사용자가 답변을 준비할 수 있도록 돕습니다.
  2. 각 기업의 분석 자료와 면접 팁을 정리하여 사용자가 기업별로 맞춤형 준비를 할 수 있게 지원합니다.
  3. 면접 후 회고를 기록하고 분석할 수 있어, 데이터 기반으로 면접 준비를 개선할 수 있습니다.
  4. 면접 일정을 관리하고 알림을 통해 중요한 일정을 놓치지 않도록 도와줍니다.
  5. 멘토와의 실시간 채팅 기능을 통해 취업 준비생이 언제든지 궁금한 점을 물어보고, 면접 준비에 필요한 조언을 받을 수 있습니다.

프론트엔드 프로젝트

마이크로 프론트엔드 아키텍처(MFA; Micro Frontend Architecture)를 채택하여 각 애플리케이션은 독립적으로 빌드되고 배포됩니다. 이를 통해 각 팀은 자신만의 책임 범위 내에서 개발할 수 있으며, 애플리케이션의 모듈화와 유지보수성이 향상되었습니다.

각 애플리케이션은 CDN(Content Delivery Network) 을 통해 배포되고, 사용자 브라우저에서 동적으로 통합됩니다.

이 방식은 애플리케이션 간 유연성을 높이고, 기능 추가나 업데이트가 독립적으로 이루어져 시스템의 확장성과 탄력성을 보장합니다.

프로젝트명 프로젝트 요약 기능
PickMe-MFA-Root 마이크로 프론트엔드 통합 Single-SPA 응용 프로그램을 시작하는 루트 HTML
마이크로프론트엔드를 동적으로 통합
PickMe-Style-Guide 스타일 가이드 Module Federation을 활용한 컴포넌트 동적 제공
Storybook을 활용한 컴포넌트 문서화
PickMe-Nav-Application 네비게이션 마이크로 프론트엔드 웹사이트 공통 네비게이션 공간 렌더링
PickMe-Auth-Parcel 사용자 관리 마이크로 꾸러미 조각 Amazon Cognito를 이용한 사용자 관리
동적 모듈 호출이 가능한 Parcel 제공
PickMe-Record-Application 기록 서비스 마이크로 프론트엔드 사용자 맞춤 면접 준비 기록 페이지
PickMe-Review-Application 면접 회고 마이크로 프론트엔드 사용자 맞춤 면접 리뷰 페이지
PickMe-Report-Application 기업 분석 마이크로 프론트엔드 사용자 맞춤 기업 분석 페이지
PickMe-Calendar-Application 캘린더 마이크로 프론트엔드 면접 일정 관리와 알림 관리 페이지
PickMe-Reminder-Parcel 알림 마이크로 꾸러미 조각 서비스 워커를 사용하여 OneSignal SDK를 로드
브라우저에서 푸시 알림을 등록하는 Parcel 제공
PickMe-Chat-Application 채팅 마이크로 프론트엔드 사용자간 실시간 채팅 위젯

백엔드 프로젝트

마이크로서비스 아키텍처(MSA; MicroService Architecture)를 기반으로 설계되어 각 서비스는 독립적으로 배포되고 실행됩니다. 이를 통해 각 서비스는 명확하게 책임이 분리되고, 독립적으로 관리됩니다.

프론트엔드와의 통신은 RESTful API를 통해 이루어지며, 서비스 간의 연동이 원활하게 진행됩니다.

모든 서비스는 도커(Docker) 이미지를 사용하여 컨테이너화되어 있으며, AWS 인프라를 활용하여 배포됩니다. 또한, 오토스케일링 기능을 통해 트래픽 증가에 따른 리소스를 자동으로 확장할 수 있어, 시스템의 안정성과 확장성을 보장합니다.

프로젝트명 프로젝트 요약 기능
PickMe-Record-Service 기록 마이크로 서비스 사전 준비 과정에서 예상 질문과 답변을 정리할 수 있도록 기록하는 서비스
PickMe-Review-Service 회고 마이크로 서비스 면접 후 면접 정보, 진행 과정, 질문과 답변, 의사소통, 분석과 평가 해당 면접에 대해 리뷰하는 서비스
PickMe-Report-Service 공고 분석 마이크로 서비스 사전 준비 과정에서 사용자가 기업 분석을 할 수 있도록 기록하는 서비스
PickMe-Calendar-Service 캘린더 마이크로 서비스 사용자가 캘린더에 회사명, 면접 시간, 면접 위치 등 면접 일정을 저장하고 관리할 수 있는 서비스
PickMe-Reminder-Service 알림 마이크로 서비스 API를 통해 알림 시간을 관리하고, 스케쥴러가 매시간 알림을 발송하는 서비스
PickMe-Chat-Service 채팅 마이크로 서비스 사용자 간 실시간 채팅을 제공하고 참가 중인 사용자를 관리하는 서비스

CI/CD

cicd

  1. 소스 코드 관리: Git으로 소스 코드를 관리하고, GitHub에 푸시 후 Pull Request(PR)을 생성합니다.
  2. 코드 빌드 및 테스트: GitHub Actions를 사용하여 코드 빌드, 테스트, 린트를 수행합니다.
  3. PR 승인 및 병합: main 브랜치는 보호되어 있으며, PR에 대한 리뷰 승인을 받은 후 main 브랜치에 병합됩니다.
  4. 도커 이미지 빌드: AWS CloudBuild에서 도커 컨테이너 이미지를 빌드합니다.
  5. ECR로 이미지 푸시: 빌드된 이미지를 AWS ECR로 푸시합니다.
  6. 컨테이너 배포: AWS CodeDeploy를 사용하여 ECR에서 이미지를 가져와 컨테이너를 배포하고, ECS에서 실행됩니다.

빌드 워크플로어

  1. PR이 열리면 워크플로어를 작동해서 빌드 성공을 확인
  2. 빌드 결과는 아티펙터로 저장해서 다른 워크플로어에서 사용할 수 있게 준비

Git Flow 전략

  • main 브랜치: 프로덕션 상태 유지
  • develop, issue- 브랜치: 개발 작업

main 브랜치를 보호하고 PR을 통해 리뷰어의 승인을 통해 병합하는 규칙을 설정

  1. 깃헙 Rulesets에 main 브랜치 보호 설정 Main-Rule

    • required_approving_review_count : 리뷰어 승인 요구
    • dismiss_stale_reviews_on_push : 새로운 커밋이 PR에 푸시되면 이전에 완료된 리뷰는 자동으로 무효화
    • require_last_push_approval : 최종 푸시에 대한 승인 요구. PR을 머지하기 전에 마지막 커밋에 대한 리뷰 승인이 완료되어야 함.
  2. PR 요청시 리뷰어 자동 할당 워크플로어 작성 auto-assign

소스 코드 관리 (SCM)

  • .gitmessage 커밋 메시지 관리를 주석으로 제공
  • .gitconfig 디폴트 브랜치를 develop으로 설정
  • 자동 스크립트 추가
    • setup.ps1 : 윈도우용
    • setup.zsh : 리눅스용

인프라

infra

기술 스택

프론트엔드

카테고리 스택
모듈 Single-SPAModule FederationUserscript
언어 TypeScriptJavaScriptEJSHTML5CSS3
SPA VuejsReactSvelte
SPA 라이브러리 Vue RouterVue-QueryVeeValidate
React RouterReact QueryReact Hook Form
PiniaZustandJotai
애플리케이션 라이브러리 Socket.ioZodYupAxiosJWT
UI 라이브러리 Chakra UIQuasarSMUIstyled-components
외부 라이브러리 OneSignalEditorjs
테스트툴 Vitest
빌드 ViteWebpackRollup.jsTerser
개발 도구 PostmanSteigerESLintPrettier
문서 StorybookTypeDocFigma

백엔드

카테고리 스택
프레임워크 NestJSNodeJS
SpringSpring Boot
언어 TypeScriptJava
데이터베이스 MongoDBAmazon DynamoDBRedis
애플리케이션 라이브러리 Socket.ioTypeORMAxiosdotenv
테스트툴 JestVitest
빌드 Gradleesbuild
개발 도구 ESLintPrettier
문서 SwaggerTypeDoc

인프라

카테고리 스택
컴퓨팅 Amazon ECSAmazon EC2AWS Amplify
네트워크 Amazon CloudFrontAmazon Route 53AWS Elastic Load Balancing
인증 Amazon Cognito
스토리지 Amazon S3
데이터베이스 MongoDB AtlasAmazon DynamoDB
관리 Amazon API GatewayAmazon CloudWatch

데브옵스

카테고리 스택
컨테이너 Docker
오케스트레이션 Docker ComposeAmazon ECS
CI/CD Github Actions

About

면접 기록 서비스

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •