Skip to content

πŸ—“οΈ [project] 일정 관리 및 곡유 μ„œλΉ„μŠ€

Notifications You must be signed in to change notification settings

BeefCutlet/calenkit

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Calenkit

Project Summary

  • 일정을 λ“±λ‘ν•˜κ³  λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό κ³΅μœ ν•  수 μžˆλŠ” μ‹€μ‹œκ°„ 일정 곡유 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€.
  • 둜그인 ν”„λ‘œμ„ΈμŠ€ κ΅¬ν˜„κ³Ό 메일 전솑 κΈ°λŠ₯, 이미지 μ—…λ‘œλ“œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ˜€μœΌλ©°, μ‹€μ‹œκ°„ 일정 곡유 κΈ°λŠ₯ κ΅¬ν˜„μ— 일뢀 κΈ°μ—¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • Spring Bootλ₯Ό μ‚¬μš©ν•΄ λ³Έ 첫 ν”„λ‘œμ νŠΈμ΄λ©°, OAuth2.0μ΄λΌλŠ” μƒμ†Œν•œ κΈ°μˆ μ„ μ‚¬μš©ν•΄λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • Google Slides, Notion 등을 μ΄μš©ν•˜μ—¬ νŒ€μ›λ“€κ³Ό ν•¨κ»˜ ꡬ체적인 섀계λ₯Ό μ§„ν–‰ν•΄λ³Ό 수 μžˆμ—ˆμœΌλ©° 브랜치 μ „λž΅μ„ μˆ˜λ¦½ν•˜κ³  컀밋 κ·œμΉ™μ„ μ •ν•˜λŠ” λ“±μ˜ νŒ€ ν”„λ‘œμ νŠΈ κ²½ν—˜μ„ ν•΄λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

πŸ‘¨β€πŸ‘¨β€πŸ‘§β€πŸ‘¦Team Member

  • κΉ€λ―Όμž¬ : 일정 μΊ˜λ¦°λ” 좜λ ₯, 일정 μΆ”κ°€ μ‚­μ œ 및 μˆ˜μ •, νœ΄μ§€ν†΅, 즐겨찾기, 검색, λ¬΄ν•œ 슀크둀 κΈ°λŠ₯
  • 라재희 : 일정 메인 및 상세 λ ˆμ΄μ•„μ›ƒ, 일정 μ΄ˆλŒ€ 및 곡유, 일정 λ‚΄μš© λ³€κ²½ μ‹€μ‹œκ°„ 반영, ν‘Έμ‹œ μ•Œλ¦Ό
  • μ΄μ§„κ·œ : νšŒμ› κ°œμΈμ •λ³΄ 관리(λ§ˆμ΄νŽ˜μ΄μ§€), νšŒμ› 관리(κ΄€λ¦¬μžνŽ˜μ΄μ§€)
  • μ˜€μ„Έμš± : 카카였 μ†Œμ…œλ‘œκ·ΈμΈ, νšŒμ›κ°€μž…, 이메일 전솑 κΈ°λŠ₯, 이미지 μ €μž₯ κΈ°λŠ₯

πŸ“™WIKI

  • calenkit의 뢀가적 μ„€λͺ…은 WIKIλ₯Ό μ΄μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  • calenkit WIKI λ‚΄μš©μ„ μ°Έκ³ ν•΄μ£Όμ„Έμš”.

πŸ› οΈSkill

html5 css3 bootstrap javascript jQuery thymeleaf

java spring springboot gradle

mysql mybatis3

apacheTomcat github

πŸ› οΈTeam Collaboration Tool

  • Github
  • Notion
  • Google Slide
  • diagrams.net
  • ERD Cloud
  • Discord
  • Code with Me (IntelliJ)

βœ”Git Branch Policy

image

  • Github-Flow μ „λž΅κ³Ό μœ μ‚¬ν•¨
  • μž‘μ—…μ€ user-branchμ—μ„œλ§Œ 이루어지며 develop, main 브랜치둜 직접 μ ‘κ·Ό λΆˆκ°€λŠ₯
  • μƒˆλ‘œμš΄ λΈŒλžœμΉ˜λŠ” develop을 κΈ°μ€€μœΌλ‘œ μƒμ„±ν•˜μ—¬ μž‘μ—… μ§„ν–‰
  • λΈŒλžœμΉ˜λŠ” λ‘œμ»¬μ— commitν•˜κ³  μ •κΈ°μ μœΌλ‘œ user-branch둜 push
  • μ •ν•΄μ§„ νšŒμ˜μ‹œκ°„μ— μ½”λ“œλ¦¬λ·°λ₯Ό μ§„ν–‰ν•˜κ³  pull-requestλ₯Ό 생성해 develop 브랜치둜 병합
  • 병합은 rebase-merge둜, 좩돌이 μžˆμ„ 경우 merge둜 μ§„ν–‰
  • develop λΈŒλžœμΉ˜μ— 병합 ν›„ user-branch둜 pull λ°›μ•„ κΈ°λŠ₯ ν…ŒμŠ€νŠΈ

βœ”Git Commit Message Rule

  • [FEAT] λ¬Έμ„œ λ‚΄ κΈ°λŠ₯ μΆ”κ°€, λ³€κ²½, μˆ˜μ •μ΄ λ°œμƒν•œ 경우
  • [DESIGN] λ¬Έμ„œ λ‚΄ μ½”λ“œ μˆ˜μ •(CSS) λ°œμƒν•œ 경우 (κΈ°λŠ₯ 영ν–₯ 있음)
  • [FIX] λ¬Έμ„œ λ‚΄ μ½”λ“œ 버그 μˆ˜μ • λ°œμƒν•œ 경우
  • [DOCS] λ¬Έμ„œμ˜ μΆ”κ°€, μ‚­μ œ, λ³€κ²½
  • [STYLE] μ½”λ“œ 가독성을 μœ„ν•œ μˆ˜μ •(주석, λ“€μ—¬μ“°κΈ° λ“±) λ°œμƒν•œ 경우 (κΈ°λŠ₯ 영ν–₯ μ—†μŒ)
  • [REFACTOR] 효율 증가λ₯Ό μœ„ν•œ μˆ˜μ • (κΈ°λŠ₯ 영ν–₯ μ—†μŒ)
  • [TEST] ν…ŒμŠ€νŠΈ μ½”λ“œ μΆ”κ°€ μ‚­μ œ λ³€κ²½ - ν…ŒμŠ€νŠΈ μ½”λ“œ κ΄€λ ¨ λͺ¨λ“  변경사항듀
  • [ETC] 기타 μ• λ§€ν•œ 경우

βœ”ERD Diagram

ERD

λ‹΄λ‹Ή 파트

Interceptorλ₯Ό μ΄μš©ν•œ 인증 ν”„λ‘œμ„ΈμŠ€ κ΅¬ν˜„

  • νŠΉμ • μš”μ²­μ„ μ œμ™Έν•œ λŒ€λΆ€λΆ„μ˜ μš”μ²­λ“€μ€ λ‘œκ·ΈμΈμ„ ν•œ 뒀에 μ΄μš©ν•  수 있고, κ΄€λ¦¬μž 계정과 일반 νšŒμ› 계정은 μ„œλ‘œ λ‹€λ₯Έ νŽ˜μ΄μ§€μ—λ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ„λ‘ μ„€κ³„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ λ§€ μš”μ²­λ§ˆλ‹€ 둜그인이 λ˜μ–΄μžˆλŠ”μ§€, κΆŒν•œμ΄ μžˆλŠ”μ§€λ₯Ό 체크할 ν•„μš”κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • μš”μ²­λ§ˆλ‹€ 둜그인 μƒνƒœ 및 κΆŒν•œμ„ μžλ™μœΌλ‘œ κ²€μ‚¬ν•˜κΈ° μœ„ν•΄μ„œ Spring Interceptorλ₯Ό ν™œμš©ν•˜μ—¬ 인증이 ν•„μš”ν•œ μš”μ²­μ΄ 듀어왔을 λ•Œ, μš”μ²­μ„ κ°€λ‘œμ±„μ„œ 인증 및 인가λ₯Ό μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.
  • 일반 μœ μ €μ™€ κ΄€λ¦¬μž κΆŒν•œμ„ κ΅¬λ³„ν•˜μ—¬μ•Ό ν–ˆκΈ° λ•Œλ¬Έμ— 인터셉터λ₯Ό λΆ„λ¦¬ν•˜μ—¬ κΆŒν•œλ§ˆλ‹€ λ‹€λ₯Έ 인터셉터가 λ™μž‘ν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

메일 전솑 κΈ°λŠ₯ κ΅¬ν˜„

  • 둜그인 μ‹œμ— 일뢀 둜그인 ν˜•νƒœ(둜그인 μ½”λ“œλ₯Ό μ΄μš©ν•˜μ—¬ 둜그인, νšŒμ›κ°€μž… ν›„ 둜그인)μ—μ„œλŠ” 둜그인 λ˜λŠ” νšŒμ›κ°€μž…μ„ μœ„ν•œ μ½”λ“œλ₯Ό μ΄λ©”μΌλ‘œ μ „μ†‘ν•˜μ—¬ 인증을 ν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • 이메일 전솑을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œ JavaMailSender λΌμ΄λΈŒλŸ¬λ¦¬μ™€ Google SMTPλ₯Ό μ΄μš©ν•˜μ—¬ λ‘œκ·ΈμΈμ„ μ‹œλ„ν•  λ•Œ λΉ„λ°€λ²ˆν˜Έ λŒ€μ‹  μž…λ ₯ν•  둜그인 μ½”λ“œλ₯Ό λ©”μΌλ‘œ μ „μ†‘ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • 이메일 전솑은 λ‹€λ₯Έ λ‘œμ§μ— λΉ„ν•΄ 속도가 ν˜„μ €νžˆ 느렸기 λ•Œλ¬Έμ— 둜그인 μ½”λ“œλ₯Ό λ°œκΈ‰ν•˜λŠ” μ½”λ“œμ™€ 같이 μš”μ²­ 처리λ₯Ό ν•˜κ²Œ 되면, 이메일 전솑이 μ™„λ£Œλ˜κΈ°κΉŒμ§€ 응닡이 μ§€μ—°λ˜λŠ” λ¬Έμ œκ°€ μƒκ²ΌμŠ΅λ‹ˆλ‹€.
  • 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 둜그인 μ½”λ“œλ₯Ό μš”μ²­ν•  λ•Œ, 이메일 전솑 μš”μ²­μ„ λΉ„λ™κΈ°μ‹μœΌλ‘œ μ „μ†‘ν•˜λ„λ‘ κ΅¬ν˜„ν•˜μ—¬ 메일 μ „μ†‘μœΌλ‘œ 인해 3μ΄ˆκΉŒμ§€ μ§€μ—°λœ 응닡이 1초 λ‚΄λ‘œ 응닡될 수 μžˆλ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

이미지 μ €μž₯ κΈ°λŠ₯ κ΅¬ν˜„

  • νšŒμ›κ°€μž… μ‹œ, ν˜Ήμ€ ν”„λ‘œν•„ μˆ˜μ • μ‹œμ— ν”„λ‘œν•„ 이미지λ₯Ό μ„€μ •ν•˜κ³  μ €μž₯ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • κ·ΈλŸ¬λ‚˜ λ°°ν¬ν•œ λ’€μ—λŠ” λ‘œμ»¬μ— 이미지λ₯Ό 계속 μ €μž₯ν•˜λ‹€λ³΄λ©΄ μ„œλ²„μ˜ μ €μž₯곡간 λΆ€μ‘±ν•΄μ§ˆ κ°€λŠ₯성이 μžˆμ—ˆκ³ , 관리도 λΆˆνŽΈν•˜μ˜€μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ™ΈλΆ€ μ €μž₯μ†Œμ— 이미지λ₯Ό μ €μž₯ν•˜κ³  μ›ΉνŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•  λ•Œ 뢈러올 ν•„μš”κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • ν•΄κ²° λ°©λ²•μœΌλ‘œ μ™ΈλΆ€ μ €μž₯μ†ŒμΈ Amazon S3에 이미지λ₯Ό μ €μž₯ν•˜κ³  ν•΄λ‹Ή 이미지 κ²½λ‘œμ—μ„œ 이미지λ₯Ό μ°Ύμ•„μ„œ 보여쀄 수 μžˆλ„λ‘ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

카카였 μ†Œμ…œ 둜그인 κΈ°λŠ₯ κ΅¬ν˜„μ„ κ΅¬ν˜„

  • 카카였 μ†Œμ…œ 둜그인 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” 카카였 인증 μ„œλ²„μ™€ ν†΅μ‹ ν•˜μ—¬ AccessKeyλ₯Ό λ°›κ³ , 카카였 λ¦¬μ†ŒμŠ€ μ„œλ²„μ™€ ν†΅μ‹ ν•˜μ—¬ μ‚¬μš©μžμ˜ 정보λ₯Ό λ°›μ•„μ˜¬ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • κΈ°μ‘΄ μ„œλ²„μ˜ APIλ‘œλŠ” 외뢀와 톡신이 λΆˆκ°€λŠ₯ν•˜μ˜€κ³ , μ„œλ²„ μ™ΈλΆ€μ˜ API와 톡신할 수 μžˆλŠ” 방법을 μ°Ύμ•„μ•Όν–ˆμŠ΅λ‹ˆλ‹€.
  • OpenFeign은 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€κΈ°λ§Œ ν•˜λ©΄ μ™ΈλΆ€μ˜ APIλ₯Ό μ‰½κ²Œ ν˜ΈμΆœν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • OpenFeign을 μ‚¬μš©ν•˜μ—¬ Kakao 인증 μ„œλ²„ 및 λ¦¬μ†ŒμŠ€ μ„œλ²„ APIλ₯Ό ν˜ΈμΆœν•˜μ—¬ νšŒμ›μ˜ 정보λ₯Ό λ°›μ•„μ˜€κ³ , ν•΄λ‹Ή 정보λ₯Ό λ°”νƒ•μœΌλ‘œ μ„Έμ…˜ μ„€μ • 및 νšŒμ›κ°€μž…μ„ μ§„ν–‰ν•˜λ„λ‘ κ΅¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • λ‹€λ§Œ, OpenFeign을 μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€ APIλ₯Ό ν˜ΈμΆœν•˜λ©΄, API μŠ€νŽ™μ„ 직접 κ΅¬ν˜„ν•΄μ•Ό ν–ˆκΈ°μ— 인증 μ„œλ²„μ™€ λ¦¬μ†ŒμŠ€ μ„œλ²„ API 호좜용 ν΄λž˜μŠ€μ™€ DTOκΉŒμ§€ 총 6개의 ν΄λž˜μŠ€κ°€ ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. 이둜 인해, 관리해야 ν•  ν΄λž˜μŠ€κ°€ λ§Žμ•„μ„œ 둜직 νŒŒμ•…μ΄ λ³΅μž‘ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.
  • 문제λ₯Ό ν•΄κ²°ν•˜κ³ μž OAuth2.0 인증을 보닀 μ‰½κ²Œ ν•  수 μžˆλŠ” 방법을 μ°Ύμ•„λ³΄μ•˜κ³ , OAuth Client 라이브러리λ₯Ό μ΄μš©ν•˜λ©΄ OAuth2.0 인증을 μœ„ν•œ 클래슀λ₯Ό μ œκ³΅λ°›μ•„ μ„œλΉ„μŠ€ 클래슀 ν•˜λ‚˜λ‘œ 인증을 ν•  수 μžˆλ‹€λŠ” 사싀을 μ•Œκ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. OAuth Clientλ₯Ό μ΄μš©ν•œ 인증으둜 λ¦¬νŒ©ν† λ§ ν•¨μœΌλ‘œμ¨ 인증을 μœ„ν•œ 6개의 ν΄λž˜μŠ€κ°€ 1개의 클래슀둜 쀄어듀어 μœ μ§€λ³΄μˆ˜μ˜ νš¨μœ¨μ„±μ„ 높일 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

πŸ—“οΈκ΅¬ν˜„

βœ… 둜그인

image

  • 카카였 μ†Œμ…œ 둜그인 image
  • νšŒμ› 정보가 μ‘΄μž¬ν•˜κ³  λΉ„λ°€λ²ˆν˜Έκ°€ μ‘΄μž¬ν•  경우, λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인 image
  • νšŒμ› 정보가 μ‘΄μž¬ν•˜κ³  λΉ„λ°€λ²ˆν˜Έκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우, 둜그인 μ½”λ“œλ‘œ 둜그인
    • 둜그인 μ½”λ“œλŠ” μž…λ ₯ν•œ μ΄λ©”μΌλ‘œ 전솑 image
  • νšŒμ› 정보가 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우, νšŒμ›κ°€μž… μ½”λ“œλ‘œ 둜그인
    • νšŒμ›κ°€μž… μ½”λ“œλŠ” μž…λ ₯ν•œ μ΄λ©”μΌλ‘œ 전솑 image image

βœ… νšŒμ›κ°€μž…

  • ν”„λ‘œν•„ 사진, λ‹‰λ„€μž„, λΉ„λ°€λ²ˆν˜Έ μ„€μ • κ°€λŠ₯ image

βœ… λ©”μΈνŽ˜μ΄μ§€ (🚨둜그인 νšŒμ›λ§Œ 접속 κ°€λŠ₯)

image

  • 검색 κΈ°λŠ₯ - 일정 검색(필터링 - 제λͺ©, λ‚΄μš©) image image
  • 검색 κΈ°λŠ₯ - νœ΄μ§€ν†΅ 검색 image

βœ… λ§ˆμ΄νŽ˜μ΄μ§€ (🚨둜그인 νšŒμ›λ§Œ 접속 κ°€λŠ₯)

image

  • λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ image

βœ… 일정 μƒμ„ΈνŽ˜μ΄μ§€ (🚨둜그인 νšŒμ›λ§Œ 접속 κ°€λŠ₯)

  • νœ΄μ§€ν†΅ 이동 / 메인가기 / 일정 곡유 / 즐겨찾기 image
  • 제λͺ©, μ‹œμž‘ λ‚ μ§œ 및 μ’…λ£Œ λ‚ μ§œ λ³€κ²½ image
  • μ§„ν–‰ μƒνƒœ λ³€κ²½ image
  • λ‚΄μš© μž‘μ„± 및 λ³€κ²½ (μ‹€μ‹œκ°„ 곡유) image
  • 일정 μ΄ˆλŒ€ (메일 λ°œμ†‘ 및 ν‘Έμ‹œ μ•Œλ¦Ό) image image image
  • 일정 μ°Έκ°€ image image image
  • κΆŒν•œ λ³€κ²½(ν‘Έμ‹œ μ•Œλ¦Ό) image

βœ… κ΄€λ¦¬μžνŽ˜μ΄μ§€ (πŸš¨κ΄€λ¦¬μžλ§Œ 접속 κ°€λŠ₯)

  • νšŒμ› μƒνƒœ λ³€κ²½
    • νƒˆν‡΄νšŒμ›, μΌλ°˜νšŒμ›, νœ΄λ©΄νšŒμ›, κ΄€λ¦¬μžλ‘œ νšŒμ› μƒνƒœ λ³€κ²½ κ°€λŠ₯ image
  • νšŒμ› 검색
    • ID의 μ•žμžλ¦¬κ°€ μΌμΉ˜ν•˜λŠ” νšŒμ› 검색 image
  • νšŒμ› 정보 μ‚­μ œ
    • [선택 νšŒμ› μ‚­μ œ] λ²„νŠΌ 클릭 μ‹œ DBμ—μ„œ νšŒμ› 정보 μ™„μ „ μ‚­μ œ image

About

πŸ—“οΈ [project] 일정 관리 및 곡유 μ„œλΉ„μŠ€

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 83.1%
  • Java 7.4%
  • HTML 6.6%
  • CSS 2.9%