Skip to content

πŸ“ 청년을 μœ„ν•œ 곡뢀 지도, GongSpot(곡슀팟) μ„œλ²„ λ ˆν¬μ§€ν† λ¦¬

Notifications You must be signed in to change notification settings

Gongspot/Gongspot_Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

237 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Gongspot - SpringBoot

πŸͺ„ 곡슀팟 μ„œλ²„ λ ˆν¬μ§€ν† λ¦¬μž…λ‹ˆλ‹€.

πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ νŒ€μ› μ†Œκ°œ

μ΄μœ€μ§€ ν™μ§€ν˜Έ μ •μ€€μ˜ κ³½μž¬ν˜„ 쑰은정

🦾 ν”„λ‘œμ νŠΈ μ†Œκ°œ

Gongspot은 μ²­λ…„λ“€μ˜ 곡뢀 곡간 정보(ν˜Όμž‘λ„, 리뷰)등을 κ³΅μœ ν•  수 μžˆλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. SpringBootλ₯Ό 기반으둜 κ°œλ°œλ˜μ—ˆμœΌλ©°, RESTful APIλ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈμ™€ ν†΅μ‹ ν•©λ‹ˆλ‹€.


πŸ›  기술 μŠ€νƒ

ν”„λ ˆμž„μ›Œν¬

  • Spring Boot
  • Spring Security (OAuth2, JWT 기반 인증/인가)

λ³΄μ•ˆ 및 인증

  • OAuth2 (카카였 둜그인 연동)
  • JWT (Access Token + Refresh Token)
  • Redis (λΈ”λž™λ¦¬μŠ€νŠΈ μ €μž₯ 및 토큰 관리)

λ°μ΄ν„°λ² μ΄μŠ€

  • MySQL 8.x
  • Hibernate

API λ¬Έμ„œν™”

  • Swagger (springdoc-openapi)

λΉŒλ“œ 도ꡬ

  • Gradle

배포 및 CI/CD

  • GitHub Actions (배포 μžλ™ν™”)
  • AWS EC2 (Ubuntu μ„œλ²„ 직접 배포)
  • NGINX (λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ + HTTPS)

πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

Frame 3

도메인 주도 섀계(DDD, Domain-Driven Design) 와 관심사 뢄리(Separation of Concerns) 원칙을 기반으둜 κ΅¬μ‘°ν™”ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

핡심 λ„λ©”μΈλ³„λ‘œ entity, service, controller, repositoryλ₯Ό λ‚˜λˆ„μ–΄ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 λ†’μ˜€μœΌλ©°, 곡톡 κΈ°λŠ₯듀은 commonκ³Ό global νŒ¨ν‚€μ§€μ— μ§‘μ€‘μ‹œμΌœ 쀑볡 λ‘œμ§μ„ λ°©μ§€ν•˜κ³  μž¬μ‚¬μš©μ„±μ„ λ†’μ˜€μŠ΅λ‹ˆλ‹€.

com.gongspot.project.common

code

  • status: 곡톡 응닡 μ½”λ“œ, μƒνƒœ μ½”λ“œ 관리
  • ErrorStatus, SuccessStatus: μ—λŸ¬ 및 성곡 μƒνƒœλ₯Ό enum으둜 μ •μ˜
  • BaseCode, BaseErrorCode: 곡톡 μ½”λ“œ 베이슀 μΈν„°νŽ˜μ΄μŠ€
  • ErrorReasonDTO, ReasonDTO: μ—λŸ¬ 응닡 상세 λ©”μ‹œμ§€ μ „λ‹¬μš© DTO

entity

  • BaseEntity: λͺ¨λ“  엔티티에 μƒμ†λ˜λŠ” 곡톡 ν•„λ“œ (createdAt, updatedAt, deletedAt) 관리

enums

  • 전체 λ„λ©”μΈμ—μ„œ μ‚¬μš©ν•˜λŠ” 곡톡 enum λͺ¨μŒ
  • κΈ€λ‘œλ²Œ μ˜ˆμ™Έ 처리 및 곡톡 μ—λŸ¬ 관리
  • BaseHandler, ExceptionAdvice, GeneralException: ν†΅ν•©λœ μ˜ˆμ™Έ 흐름 처리 및 μ»€μŠ€ν…€ μ—λŸ¬ λ©”μ‹œμ§€ μ„€μ •

response

  • ApiResponse: 응닡 톡일화 및 일관성을 μœ„ν•œ ν‘œμ€€ 응닡 클래슀

com.gongspot.project.domain

핡심 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§λ³„ 도메인 디렉토리

alarm/entity ~ search/entity

  • 각 ν΄λ”λŠ” κ°œλ³„ 도메인 (μ•Œλ¦Ό, λ°°λ„ˆ, μ’‹μ•„μš”, λ―Έλ””μ–΄, μ‹ κ·œ μž₯μ†Œ, μ•Œλ¦Ό, μž₯μ†Œ, 포인트, 리뷰, 검색, μœ μ €)에 λŒ€μ‘
  • entity 디렉토리 μ•ˆμ—λŠ” ν•΄λ‹Ή λ„λ©”μΈμ˜ Entity 클래슀만 관리
  • 이후 ν•„μš” μ‹œ service, controller, repositoryκ°€ λ™μΌν•œ 도메인 디렉토리에 좔가될 수 μžˆλ„λ‘ 섀계됨

μ˜ˆμ‹œ

  • alarm/entity: Alarm, AlarmType μ—”ν‹°ν‹°
  • place/entity: Place, Place κ΄€λ ¨ μ»¬λ ‰μ…˜ ν…Œμ΄λΈ”
  • review/entity: Review, ReviewMedia λ“±

com.gongspot.project.global

config

  • κΈ€λ‘œλ²Œ μ„€μ • 파일 관리
  • QueryDSLConfig: QueryDSL μ„€μ •
  • SwaggerConfig: Swagger λ¬Έμ„œν™” μ„€μ •
  • μΆ”ν›„ κΈ€λ‘œλ²Œ μ‹œνλ¦¬ν‹°, κΈ€λ‘œλ²Œ ν•„ν„°, κΈ€λ‘œλ²Œ λ©”μ‹œμ§€ 컨버터 λ“± μΆ”κ°€ κ°€λŠ₯

test

  • ν…ŒμŠ€νŠΈμš© μ»¨νŠΈλ‘€λŸ¬μ™€ μ„œλΉ„μŠ€ 클래슀 예제

🌿 Git-flow μ „λž΅

Git-flow Strategyλ₯Ό μ±„νƒν•˜μ—¬ 체계적인 버전 관리와 ν˜‘μ—… ν™˜κ²½μ„ κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€.

  • main: μ΅œμ’…μ μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ λ°°ν¬λ˜λŠ” κ°€μž₯ μ•ˆμ •μ μΈ 버전 브랜치
  • develop: λ‹€μŒ μΆœμ‹œ 버전을 κ°œλ°œν•˜λŠ” 쀑심 브랜치. κΈ°λŠ₯ 개발 μ™„λ£Œ ν›„ feature λΈŒλžœμΉ˜λ“€μ΄ 병합
  • feature: κΈ°λŠ₯ 개발용 브랜치. developμ—μ„œ λΆ„κΈ°ν•˜μ—¬ μž‘μ—…
  • refactor: μ½”λ“œ λ¦¬νŒ©ν† λ§ μ „μš© 브랜치. κΈ°λŠ₯ λ³€κ²½ 없이 μ½”λ“œ ꡬ쑰 κ°œμ„  μž‘μ—…
  • hotfix: 운영 ν™˜κ²½ κΈ΄κΈ‰ μˆ˜μ •μš© 브랜치. mainμ—μ„œ λΆ„κΈ°ν•˜μ—¬ μ¦‰μ‹œ μˆ˜μ • ν•„μš”ν•œ 버그 ν•΄κ²°

🚧 API λ¬Έμ„œ

API λ¬Έμ„œλŠ” Swaggerλ₯Ό 톡해 μ œκ³΅λ©λ‹ˆλ‹€. μ•„λž˜ URL둜 μ ‘μ†ν•˜λ©΄ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. https://api.gongspot.site/swagger-ui/index.html#/

About

πŸ“ 청년을 μœ„ν•œ 곡뢀 지도, GongSpot(곡슀팟) μ„œλ²„ λ ˆν¬μ§€ν† λ¦¬

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages