일정 관리 및 공유를 위한 캘린더 서비스
- 개인의 일정을 캘린더 뷰 스케줄러를 통해 관리한다.
- 친구 관계인 사람을 일정에 함께 할당하여 캘린더에 동일한 일정을 생성하고 공유한다.
- 일정별로 개인화된 설정을 적용한다.
- 사용자의 설정에 따라 사용자에게 일정 및 서비스 관련 알림을 전송한다.
Next.js
의 SSR, Client-side Data Fetching의 적절한 활용을 통한 UX 최적화
SWR
,Zustand
,Context API
의 활용을 통한 서버 상태 및 클라이언트 상태의 개념 이해
Vanilla Extract
의 pure css 생성을 통한 웹 페이지 성능 향상 (zero-runtime css-in-js)
Storybook
을 통한 문서화 및 컴포넌트 관리Webpack Module Federation
, 모노레포 (Turborepo
)를 통한 도메인 단위의 프로젝트 관리 경험
- Record를 사용한 간결한 DTO 제작
JUnit5
와Mockito
를 이용한 TDD, 테스트 코드 작성 후 기능 구현- 레이어별 유닛 테스트 및 통합 테스트 작성 (프로젝트 전체 361개)
- 테스트 환경 통합으로 테스트 컨텍스트 감소 (87개 → 9개)
- 외부 Kafka 서버에 의존하지 않고
EmbeddedKafka
를 이용해 독립적인 테스트 환경 구축
- Kafka Producer와 Consumer를 사용해 메시지 큐로 알림 기능 구현
- 다수의 Consumer를 두어 동일한 이벤트를 여러 프론트엔드 서버(Next.js)에서 처리
- Docker multi stage build를 통한 빌드 최적화
- Docker compose를 통한 컨테이너 오케스트레이션
Jenkins
를 통한 지속적 통합 및 배포- DB 서버 설정, Docker volume 연결
SpringBoot
서버 설정 및 빌드 최적화Turborepo + Module Federation
지원 및 원격 캐시 서버 적용
EC2
방화벽 및ufw-docker
를 활용한 인바운드, 아웃바운드 규칙 관리Nginx
설정 및 HTTPS SSL 적용- Domain 연결을 위한 DNS 설정
- 코어: TypeScript, React, Next.js
- 상태 관리: SWR, Zustand, Context API
- 스타일링: Vanilla-Extract
- 테스트: Storybook
- 빌드 및 프로젝트 관리: Webpack(Module Federation), Turborepo
- 로깅 및 모니터링: Sentry
- 코어: Java 17, Spring Boot, JPA/Hibernate, Gradle
- DB: MySQL, AWS S3(file)
- 알림: Kafka
- 테스트: Junit5, Mockito, H2
- 로깅: SLF4J
- 플랫폼: AWS EC2
- OS: Ubuntu
- 환경 구축: Docker/Docker Compose
- 네트워크: NginX
- 파이프라인: Jenkins
main
- develop
- feature/create-schedule
브랜치명 내에서는 /(slash)
와 -(hyphen)
만 사용
[type(소문자)]: 한글로 작성
- feat : production code 작성
- fix : production code 오류 수정
- refactor : production code 리팩토링
- comment : 주석 변경
- docs : 문서 작업
- test : 테스트 코드
- chore : production code 변경 없음 (remove, rename 등등…)
[Type(대문자)]: 한글로 작성
- Pull Request Template
- Pn Rule
- Example:
P1) 리뷰 내용
- P1) 꼭 반영해 주세요 (Request changes)
- P2) 적극적으로 고려해 주세요 (Request changes)
- P3) 웬만하면 반영해 주세요 (Comment)
- P4) 반영해도 좋고 넘어가도 좋습니다 (Approve)
- P5) 그냥 사소한 의견입니다 (Approve)