2차프로젝트를 Kotlin으로 마이그레이션한 프로젝트입니다.
일반 쓰레기통 및 담배꽁초 쓰레기통 위치 제공 서비스
SCANNER는 사용자에게 일반 쓰레기통 및 담배꽁초 전용 쓰레기통 위치를 제공하여 조금이나마 쓰레기를 올바르게 처리할 수 있도록 유도하였습니다.
수많은 일반 쓰레기통 위치를 확인하고 쓰레기통이 부족하다는 인식을 완화할 수 있으며, 담배꽁초로 발생하는 화재 및 환경 오염 문제를 헤결 하고자 하였습니다.
- 로그인
- CoolSMS API를 활용한 문자 인증 기능을 도입하여 보다 안전한 회원가입을 할 수 있습니다.
- 위치 확인
- 사용자의 위치 200m 전방의 모든 쓰레기통 위치를 지도를 통해 확인할 수 있습니다.
- Elasticsearch를 활용한 검색 기능을 통해 보다 빠르게 쓰레기통 위치를 찾을 수 있습니다.
- 쓰레기통 세부 정보(쓰레기통 상태, 사진 등)를 확인할 수 있습니다.
- 신고 게시글 작성
- 새로운 쓰레기통을 발견하면 쓰레기통 위치 추가 신고 게시글을 작성할 수 있습니다.
- 쓰레기통 상태가 수정되면 쓰레기통 수정 신고 게시글을 작성할 수 있습니다.
- 쓰레기통 제거를 원하시면 쓰레기통 삭제 신고 게시글을 작성할 수 있습니다.
- 신고 게시글이 서비스에 반영되면 포인트를 얻을 수 있습니다.
- 상품 구매
- 사용자는 얻은 포인트를 통해 쓰레기통과 관련된 상품을 구매할 수 있습니다.
- 상품은 바코드로 지급됩니다.
- Kotlin 2.0.21
- Python 3
- Spring Boot 3
- Data JPA
- Spring Security
- React
- MySQL
- Redis
- Elasticsearch Document
- Github Actions
- AWS
- Docker
- Promtail + Loki + Grafana
- Prometheus + Grafana
- Github
- Notion
- Slack
feat
: 새로운 기능 추가, 기존의 기능을 요구 사항에 맞추어 수정fix
: 기능에 대한 버그 수정build
: 빌드 관련 수정chore
: 패키지 매니저 수정, 그 외 기타 수정 ex) .gitignorecicd
: CI 관련 설정 수정docs
: 문서(주석) 수정style
: 코드 스타일, 포맷팅에 대한 수정refactor
: 기능의 변화가 아닌 코드 리팩터링 ex) 변수 이름 변경test
: 테스트 코드 추가/수정release
: 버전 릴리즈본문에는 다음을 유의하여 작성합니다.
- 본문 내용은 양에 구애받지 않고 최대한 상세히 작성한다.
- 어떻게보다는 무엇을, 왜 변경했는지를 설명한다.
- 항목이 여러 개일 시 '_'를 통해 구분해서 작성한다.
feat: Add user authentication via Google OAuth - 사용자 인증을 위해 Google OAuth를 추가함 - 기존 로컬 로그인 방식과 함께 사용 가능하도록 병행 지원 - Google OAuth를 선택한 사용자의 프로필 정보(이름, 이메일)를 DB에 저장 - 보안을 강화하기 위해 OAuth 로그인 시 자동으로 HTTPS로 리다이렉트 되도록 설정함
- [BUG]: 버그 리포트
- [FEATURE]: 새로운 기능 요청
- [DOCS]: 문서 관련 작업
- [TEST]: 테스트 관련 작업
- [QUESTION]: 질문 또는 논의
[FEATURE] Add user profile page
본문은 다음의 내용을 포함해야 합니다.
- 만들고자 하는 기능
- 기능을 구현하기 위해 해야 할 일
### 만들고자 하는 기능 ex) Todo 생성 기능 ### 해당 기능을 구현하기 위해 할 일 - [ ] Job1 - [ ] Job2 - [ ] Job3
이슈의 가독성을 위해서 라벨을 사용합니다. 두 가지 종류의 라벨이 존재합니다.
- 이슈 타입
- 담당자
- resolved : #issue 번호 추가
- PR 시 2명에게 코드 리뷰 받고 병합
- develop에 PR 병합 시 팀원들에게 공유하기, 각자 진행 중인 브랜치에 리베이스 하기
resolved : #1 ## 📌 과제 설명 <!-- 어떤 걸 만들었는지 대략적으로 설명해주세요 --> 👩💻 요구 사항과 구현 내용 <!-- 기능을 Commit 별로 잘개 쪼개고, Commit 별로 설명해주세요 --> ## ✅ 피드백 반영사항 <!-- 지난 코드리뷰에서 고친 사항을 적어주세요. 재PR 시에만 사용해 주세요! (재PR 아닌 경우 삭제) --> ## ✅ PR 포인트 & 궁금한 점 <!-- 리뷰어 분들이 집중적으로 보셨으면 하는 내용을 적어주세요 -->
- Main Branch: 배포 가능한 상태의 안정적인 코드가 유지되는 브랜치로, 항상 최신의 안정된 버전을 반영합니다.
- Develop Branch: 새로운 기능 개발과 버그 수정을 위한 통합 브랜치로, 개발 중인 코드가 모이는 곳입니다.
- Feature Branch: 특정 기능이나 작업을 위해 독립적으로 개발하는 브랜치로, 완료 후 develop 브랜치에 병합됩니다.
예시) feature/123-add-user-login
- feature/: 새로운 기능 개발
- 123: 이슈 트래커에서 발급된 이슈 번호
- add-user-login: 사용자 로그인 기능 추가
- 코틀린은 변수에 널 값을 허용x ➡ 프로퍼티 초기화 /생성자 주입
- 코틀린은 주로 @Autowired 대신 생성자 주입을 사용 val을 사용해 주입 가능
- @Configuration @Bean 선언 시 fun 사용 ➡ 코틀린 타입 추론이 제대로 작동하지 않는 경우 반환 타입을 명시적 선언
- apply , copy 메서드, 정적 메서드 등을 활용해 구현
- data class 는 JPA 엔티티로 적합 x ➡ 일반 클래스 사용
- @Entity에는 기본생성자, open 키워드 사용 -> gradle open 옵션 자동 기능 설정
- 롬복 사용 제한 ➡ 자체 지원되는 data class , val, var 키워드 통해 롬복 사용 최소화(제거)
- 코틀린은 Checked Exception을 강제 x ➡ 예외 처리가 누락되지 않도록 주의
BackEnd 🖥 류정원 |
BackEnd 🖥 윤서진 |
BeckEnd 🖥 이훈일 |
BackEnd 🖥 김지은 |
BackEnd 🖥 김재희 |