/BooKing

SSAFY BooKing Project

Primary LanguageKotlin

πŸ“šλΆν‚Ή(BooKing)πŸ“š

개발 κΈ°κ°„

2023.10.10 ~ 2023.11.17(기획 2주, 개발 4주)

πŸ“–μ„œλΉ„μŠ€ μ†Œκ°œπŸ“–

ν‘œμ§€ 뢁킹은 μ˜€ν”„λΌμΈ λ…μ„œλͺ¨μž„ 관리 μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
μœ„μΉ˜ 기반의 λ…μ„œ λͺ¨μž„ 관리와 μΆœμ„ 체크, μ°Έκ°€λΉ„ λ“± λͺ¨μž„ 관리에 ν•„μš”ν•œ λ‚΄μš©μ„ κ΄€λ¦¬ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
λ…μ„œ λͺ¨μž„ λ‚΄μ—μ„œμ˜ κ²Œμ‹œκΈ€, 회의 λ‚΄μš© ν…μŠ€νŠΈλ‘œ λ³€ν™˜ 및 μš”μ•½ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ“—μ£Όμš” κΈ°λŠ₯πŸ“—

  1. μ£Όλ³€ μ§€μ—­μ—μ„œ λͺ¨μ§‘ 쀑인 λ…μ„œ λͺ¨μž„κ³Ό 보고 싢은 λ„μ„œμ— λŒ€ν•œ 정보 제곡
  • μ‚¬μš©μž μœ„μΉ˜ 기반으둜 μ£Όλ³€ λ…μ„œ λͺ¨μž„ 정보 제곡
  • μ—¬λŸ¬ 책에 λŒ€ν•œ 정보 제곡
  1. λ…μ„œ λͺ¨μž„ 약속 μž₯μ†Œμ— λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•˜κ³  GPS기반 μΆœμ„μ²΄ν¬ κΈ°λŠ₯
  • 지도λ₯Ό 톡해 λͺ¨μž„ μž₯μ†Œ 정보 제곡
  • μ‚¬μš©μž μœ„μΉ˜ 확인을 톡해 μΆœμ„μ²΄ν¬
  1. λ…μ„œ 회의 λ‚΄μš©μ„ ν…μŠ€νŠΈλ‘œ λ³€ν™˜ν•˜κ³  μš”μ•½ν•˜λŠ” κΈ°λŠ₯
  • STTλ₯Ό 톡해 λͺ¨μž„ λŒ€ν™” λ…ΉμŒλ³Έμ„ ν…μŠ€νŠΈλ‘œ λ³€ν™˜
  • STT λ³€ν™˜λ¬Έ λ¬Έμž₯별 μˆ˜μ • κΈ°λŠ₯ 제곡
  • λŒ€ν™” λ‚΄μš© μš”μ•½
  1. μ°Έκ°€λΉ„λ₯Ό μ§€λΆˆν•˜κ³  μΆœμ„μ²΄ν¬ μ‹œ ν™˜κΈ‰ 뢈참 μ‹œ λ―Έν™˜κΈ‰
  • μ°Έμ„μžλŠ” μ°Έκ°€λΉ„ μ „μ•‘ + λ―Έμ°Έμ„μž κΈˆμ•‘ 1/N 을 ν™˜κΈ‰λ°›λŠ”λ‹€.
  • λ―Έμ°Έμ„μžλŠ” μ°Έκ°€λΉ„ μ „μ•‘ λ―Έν™˜κΈ‰

πŸ“˜ν•΅μ‹¬ κΈ°μˆ πŸ“˜

  • MSA μ•„ν‚€ν…μ²˜, Spring webFlux, Reactive Database Driverλ₯Ό ν†΅ν•œ Non-blocking I/O μž‘μ—…μ„ 톡해 λΆ€ν•˜ λΆ„μ‚° 효과 증가
  • λ©€ν‹° λͺ¨λ“ˆ 기반의 클린 μ•„ν‚€ν…μ²˜ μ μš©μ„ ν†΅ν•œ μœ μ§€λ³΄μˆ˜μ„± 및 μ½”λ“œ 가독성 증가 및 λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œ κ°μ†Œ
  • Hilt 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ μ˜μ‘΄μ„± μ£Όμž…μ„ ν†΅ν•œ 라이프사이클 관리 용이
  • 기쑴의 XML 기반이 μ•„λ‹Œ Jetpack composeλ₯Ό 톡해 κ°œλ°œμ„ μ§„ν–‰ν•¨μœΌλ‘œμ„œ μ½”λ“œ 가독성 증가, μœ μ§€λ³΄μˆ˜ 용이

πŸ“™μ£Όμš” ν™”λ©΄πŸ“™

νšŒμ› κ΄€λ ¨ ν™”λ©΄ - 1 πŸ‘¨

νšŒμ›κ°€μž… 둜그인
νšŒμ›κ°€μž… 둜그인
νšŒμ› 정보λ₯Ό μž…λ ₯ν•œ λ’€ νšŒμ›κ°€μž…μ„ μ§„ν–‰ν•©λ‹ˆλ‹€ μΉ΄μΉ΄μ˜€μ™€ ꡬ글 μ•„μ΄λ””λ‘œ λ‘œκ·ΈμΈμ„ μ§„ν–‰ν•©λ‹ˆλ‹€.
  • μœ„μΉ˜κΈ°λ°˜ 뢁킹 μ„œλΉ„μŠ€ μ œκ³΅μ„ μœ„ν•΄ μ‚¬μš©μžμ˜ μœ„μΉ˜ 정보λ₯Ό μž…λ ₯λ°›μŠ΅λ‹ˆλ‹€.
  • 카카였 둜그인 APIκ³Ό ꡬ글 둜그인 APIλ₯Ό μ‚¬μš©ν•˜μ—¬ νšŒμ›κ°€μž…μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

νšŒμ› κ΄€λ ¨ ν™”λ©΄ - 2 πŸ‘©

νšŒμ› 정보 μˆ˜μ • λ§ˆμ΄νŽ˜μ΄μ§€
λ‚΄ 정보 μˆ˜μ • λ§ˆμ΄νŽ˜μ΄μ§€
ν”„λ‘œν•„ 사진과 λ‹‰λ„€μž„μ„ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ μ„œμž¬μ™€ λ‚΄ 뢁킹을 확인할 수 있고, 포인트 좩전을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λͺ¨μž„에 μ°Έμ—¬ν•œ 책듀이 μžλ™μœΌλ‘œ λ‚΄ μ„œμž¬μ— λ‹΄κΈ°κ³ , μΆ”κ°€λ‘œ λ„μ„œλ₯Ό 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 각 λ„μ„œλ“€μ— λŒ€ν•΄μ„œλŠ” ν•œ 쀄 평을 남길 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ°Έμ—¬ν•œ λͺ¨μž„μ˜ λͺ©λ‘μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 포인트 좩전은 카카였페이 APIλ₯Ό μ‚¬μš©ν•΄ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
λͺ¨μž„ 생성 λͺ¨μž„ ν™•μ •
λͺ¨μž„생성 λͺ¨μž„ν™•μ •
μ›ν•˜λŠ” 책을 κ³ λ₯Έ ν›„ λ…μ„œλͺ¨μž„을 μƒμ„±ν•©λ‹ˆλ‹€. μ›ν•˜λŠ” μž₯μ†Œμ™€ μ‹œκ°„, μ°Έκ°€λΉ„λ₯Ό μ„ νƒν•œ ν›„ λͺ¨μž„을 ν™•μ •ν•©λ‹ˆλ‹€.
  • 제λͺ©,μ†Œκ°œ,인원 수,ν•΄μ‹œνƒœκ·Έλ₯Ό μž…λ ₯ν•˜λ©΄ λͺ¨μž„이 μƒμ„±λ©λ‹ˆλ‹€.
  • μž…λ ₯ν•œ 정보λ₯Ό 기반으둜 λͺ¨μž„을 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ§€λ„λŠ” 넀이버 APIλ₯Ό, ν‚€μ›Œλ“œ μž₯μ†Œ 검색은 카카였 APIλ₯Ό μ‚¬μš©ν•΄ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
λͺ¨μž„ 진행 λͺ¨μž„ μ°Έμ—¬
λͺ¨μž„진행 λͺ¨μž„진행
μΆœμ„μ²΄ν¬μ™€ μ°Έκ°€λΉ„ μ§€λΆˆ 과정을 μ§„ν–‰ν•©λ‹ˆλ‹€.
μ‹€μ‹œκ°„ 단체 μ±„νŒ… νŒ”λ‘œμž‰,νŒ”λ‘œμ›Œ
μ±„νŒ… λͺ¨μž„μ°Έμ—¬
λͺ¨μž„에 μ°Έμ—¬ν•œ μ‚¬λžŒλ“€κ³Ό μ‹€μ‹œκ°„ μ±„νŒ…μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μœ μ €λ“€μ€ μ„œλ‘œ νŒ”λ‘œμš°λ₯Ό ν•  수 있고, μ„œλ‘œμ˜ λͺ¨μž„κ³Ό μ„œμž¬λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
λ„μ„œ 검색 λ…μ„œ λͺ¨μž„ STT & μš”μ•½
μ±„νŒ… λͺ¨μž„μ°Έμ—¬
자체 λ„μ„œ μ„œλ²„μ—μ„œ μˆ˜μ§‘λœ λ„μ„œ λͺ©λ‘μ„ μ‘°νšŒν•˜κ³  검색 κΈ°λŠ₯을 ν†΅ν•˜μ—¬ λ„μ„œλ₯Ό 검색할 수 μžˆμŠ΅λ‹ˆλ‹€. λ…μ„œ λͺ¨μž„ λ‚΄μš©μ„ λ…ΉμŒ 및 기둝할 수 있고, λ…μ„œ λͺ¨μž„μ˜ μš”μ•½λ³Έμ„ μ œκ³΅ν•΄μ€λ‹ˆλ‹€.
  • Jetpack Compose 의 LazyRow, LazyColumn, LazyVerticalGrid 을 μ‚¬μš©ν•˜μ—¬ λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό 효과적으둜 μŠ€ν¬λ¦°μ— ν‘œμ‹œν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • 보일러 ν”Œλ ˆμ΄νŠΈ μ½”λ“œλ₯Ό κ°μ†Œμ‹œν‚€κΈ° μœ„ν•΄ λ„μ„œ 검색 슀크린이 ν•„μš”ν•œ λ‹€λ₯Έ νŽ˜μ΄μ§€μ—μ„œλ„ λ™μΌν•œ composable function 을 ν˜ΈμΆœν•˜μ—¬ μž¬μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • TextField λ‚΄μ˜ λ‹€μ–‘ν•œ μ˜΅μ…˜(trailingIcon - 일괄 μ‚­μ œ)을 μ œκ³΅ν•˜μ—¬ UI/UX λ₯Ό ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€.
  • λ„μ„œ ν‘œμ§€λ₯Ό ν„°μΉ˜ν•˜μ—¬ λ„μ„œ μƒμ„ΈνŽ˜μ΄μ§€λ‘œ 이동, λ…μ„œ λͺ¨μž„ λ„μ„œ μ„ μ •, λ‚΄ μ„œμž¬ λ„μ„œ 등둝 λ“± λ‹€μ–‘ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ Composable function 을 κ΄€λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • 자체적으둜 λ…ΉμŒ 진행이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μ§„ν–‰λœ λ…ΉμŒμ„ λ‚΄ μ•ˆλ“œλ‘œμ΄λ“œ κΈ°κΈ° 내에 μ €μž₯ μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ‚΄ 기기에 μ €μž₯λ˜μ–΄μžˆλŠ” λ…ΉμŒ νŒŒμΌμ„ λΆˆλŸ¬μ™€ λ…ΉμŒ νŒŒμΌμ„ 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“”μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜πŸ“”

image

πŸ—ΎERDπŸ—Ύ

EERRDD

πŸ“‘Branch strategyπŸ“‘

Git Flow

# Branchλͺ…
master : 운영 μ„œλ²„λ‘œ λ°°ν¬ν•˜κΈ° μœ„ν•œ branch
develop : μ•ˆμ •λ˜κ³  배포 κ°€λŠ₯ν•œ branch
FE/develop : frontend develop
BE/develop : backend develop
{ν¬μ§€μ…˜}/feat/{κΈ°λŠ₯}#{이슈 번호} : κΈ°λŠ₯ κ°œλ°œμ„ μœ„ν•œ branch
{ν¬μ§€μ…˜}/refactor/{κΈ°λŠ₯}#{이슈 번호} : λ¦¬νŒ©ν† λ§ branch
{ν¬μ§€μ…˜}/hotfix : dev λΈŒλžœμΉ˜μ—μ„œ λ°œμƒν•œ 버그λ₯Ό μˆ˜μ •ν•˜λŠ” branch

// μ˜ˆμ‹œ
BE/feat/user#1

# Pull Requestλͺ…
브랜치λͺ…
# Pull Request λ‚΄μš©
ν…œν”Œλ¦Ώ
  • New Issues
    • Title : [BE] νšŒμ› 도메인 생성
    • Description : ν…œν”Œλ¦Ώ μ‚¬μš©
    • Assignee : λ‹΄λ‹Ήμž 지정
    • Create Issues
    • μƒκΈ°λŠ” 이슈 번호λ₯Ό μ΄μš©ν•΄μ„œ 브랜치 생성

Commit convention

  • feat: μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€ λ˜λŠ” κΈ°λŠ₯ κ΄€λ ¨

  • fix: 버그 μˆ˜μ •

  • perf: μ„±λŠ₯ κ°œμ„ μ„ μœ„ν•œ λ³€κ²½

  • refactor: κΈ°λŠ₯ μΆ”κ°€, 버그 μˆ˜μ •μ˜ λͺ©μ μ΄ μ•„λ‹Œ μ½”λ“œ λ¦¬νŒ©ν† λ§μ„ 담은 λ³€κ²½

  • docs: 마크 λ‹€μš΄ μž‘μ„±, 주석 μž‘μ„± λ“±μ˜ λ¬Έμ„œ μž‘μ—…

  • style: μ½”λ“œμ˜ 의미λ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ” formatting λ“±μ˜ λ³€κ²½

  • test: ν…ŒμŠ€νŠΈ 관리λ₯Ό μœ„ν•œ λ³€κ²½

  • ci: CIλ₯Ό μœ„ν•œ λ³€κ²½

  • build: λΉŒλ“œ μ„€μ •, 개발툴 λ³€κ²½ λ“± μ‚¬μš©μžμ™€ κ΄€λ ¨ μ—†λŠ” λ³€κ²½

  • chore: μ†ŒμŠ€ 파일 ν˜Ήμ€ ν…ŒμŠ€νŠΈ 파일의 λ³€ν™”κ°€ μ—†λŠ” λ‹¨μˆœ μž‘μ—…

  • revert: 이전 컀밋 μ·¨μ†Œ

πŸ―νŒ€μ› μ†Œκ°œπŸ―

κΉ€ν•œκ²° 신상원 μ„œν˜„μ˜
νŒ€μž₯, BE, Infra BE, Infra λΆ€νŒ€μž₯, BE
κΉ€μž¬λ§Œ μ΄μ§€ν—Œ 박희창
Android Android Android

πŸ§°μ‚¬μš© 기술🧰

FrontEnd

  • Android
    • Language: Kotlin
    • JDK: 17
    • SDK: API 34
  • React: 18.17.1

BackEnd

  • Language: Java
  • JDK: 17
  • SpringBoot: 2.7.17
    • Spring WebFlux
    • Spring Data JPA
    • Spring Data R2DBC
    • Spring Kafka
    • Spring Security
    • Spring Cloud
  • Gradle: 8.3
  • Kafka: 2.8.1

Database

  • H2: 2.1.214
  • MariaDB: 10.3
  • Mongo: 7.0.2
  • Redis: 7.2.3
  • Elasticsearch: 8.10.3

INFRA

  • AWS EC2
  • Ubuntu: 20.04
  • Docker: 24.0.6
  • Docker-compose: 2.23.0
  • Nginx: 1.18.0
  • Jenkins: 2.428

Telemetry

  • Fluentd: 1.12.0-debian-1.0
  • Prometheus: 2.47.2
  • Kibana: 8.10.3
  • Zipkin: 2.24.3
  • ngrinder: 3.5.3
  • Grafana: 10.2.0

μ™ΈλΆ€ API

  • Naver CLOVA Speech
  • Naver Object Storage
  • Google login
  • Naver Map
  • Kakaopay
  • Kakao login
  • KaKao Keyword Search
  • Kakao Location Translation