Skip to content

🎧이런 λ…Έλž˜ μ–΄λ– μ„Έμš”? Cuz I Hype~~ 🎧 [Hype]

Notifications You must be signed in to change notification settings

prgrms-web-devcourse/Team-6Jeans-Hype-BE

Repository files navigation

Hype-BE

image

잘 μ•Œλ €μ§€μ§€ μ•Šμ€ μˆ¨μ€ λͺ…곑을 κ³΅μœ ν•˜κ³  λŒ€κ²°κ³Ό νˆ¬ν‘œλ₯Ό 톡해 더 쒋은 곑을 μ•Œμ•„κ°€λŠ” μ„œλΉ„μŠ€

🎼 즐겨 λ“£λŠ” λͺ…곑 μΆ”μ²œ

즐겨 λ“£λŠ” λ…Έλž˜λ₯Ό κ²€μƒ‰ν•˜κ³  글을 μž‘μ„±ν•˜μ—¬ λ‹€λ₯Έ μ‚¬μš©μžλ“€μ—κ²Œ μΆ”μ²œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ†š λ‹€λ₯Έ μΆ”μ²œ 곑과의 λŒ€κ²°

λ‹€λ₯Έ μ‚¬μš©μžκ°€ μΆ”μ²œν•œ λ…Έλž˜μ— λŒ€κ²°μ„ μ‹ μ²­ν•˜κ³  νˆ¬ν‘œλ₯Ό 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’Ž λŒ€κ²° 결과와 μœ μ € λž­ν‚Ή 확인

λŒ€κ²° μ’…λ£Œ ν›„ 승패λ₯Ό ν™•μΈν•˜κ³  승리 포인트λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. 포인트 κΈ°μ€€μœΌλ‘œ μ‚°μ •λ˜λŠ” μ£Όκ°„ λž­ν‚Ήμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘€ λ‹€λ₯Έ μ‚¬μš©μžμ˜ μΆ”μ²œ μŒμ•… 따라 λ“£κΈ°

λ‹€λ₯Έ μ‚¬μš©μžκ°€ μΆ”μ²œν•œ λ…Έλž˜λ“€μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Hype μ„œλΉ„μŠ€ λ°”λ‘œκ°€κΈ°


ν”„λ‘œμ νŠΈ κ°œμš”

λ‚΄κ°€ μ’‹μ•„ν•˜λŠ” μŒμ•…μ„ μΆ”μ²œν•˜κ³ μž ν•˜λŠ” μš•κ΅¬κ°€ μžˆλŠ” μ‚¬λžŒλ“€, λ‚΄κ°€ 아직 λͺ¨λ₯΄λŠ” μŒμ•…λ“€μ„ μΆ”μ²œλ°›κ³  싢은 μ‚¬λžŒλ“€μ„ λŒ€μƒμœΌλ‘œ ν•˜λŠ” μŒμ•… λŒ€κ²° μ„œλΉ„μŠ€ μž…λ‹ˆλ‹€. μŒμ•…μ„ κ³΅μœ ν•˜λŠ” μ‚¬λžŒλ“€μ€ μΆ”μ²œκΈ€μ„ μ“°κ³  μ’‹μ•„μš”μ™€ λ‹€λ₯Έ λ…Έλž˜μ™€μ˜ λŒ€κ²°μ„ 생성해 λ‹€λ₯Έμ‚¬λžŒλ“€μ˜ λ°˜μ‘μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λ…Έλž˜λ₯Ό μΆ”μ²œλ°›κ³  싢은 μ‚¬λžŒλ“€μ€ λ‹€λ₯Έμ‚¬λžŒμ΄ μ œκ³΅ν•˜λŠ” μΆ”μ²œκΈ€, μ΄μƒν˜•μ›”λ“œμ»΅ ν˜•μ‹μœΌλ‘œ μ œκ³΅λ˜λŠ” μŒμ•… λŒ€κ²°μ— νˆ¬ν‘œν•˜λŠ” 것을 톡해 κ²Œμž„μ²˜λŸΌ μžμ‹ μ΄ λͺ¨λ₯΄λ˜ μž₯λ₯΄μ˜ λ…Έλž˜λ₯Ό μƒˆλ‘œ μ•Œκ²Œ 될 수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ›  Used Stacks

Spring Boot MySQL
Java 17 Gradle SpringBoot 2.7.7 Spring Data JPA MySQL 8.0

πŸ‘₯ νŒ€μ›

이수영 κΉ€μ†Œν˜„ λ°•μ„Έμ€€
λ°±μ—”λ“œ 개발 λ°±μ—”λ“œ 개발 λ°±μ—”λ“œ 개발
λ©˜ν†  μ„œλΈŒλ©˜ν† 
마λ₯΄μ½” κΉ€λͺ…ν™˜

πŸ“ Code Convention

Naver μ½”λ“œ μ»¨λ²€μ…˜ + CheckStyle 적용


🌴 Commit Convention

νƒœκ·Έ 이름 μ„€λͺ…
[CHORE] 둜직과 μƒκ΄€μ—†λŠ” μž‘λ‹€ν•œ μž‘μ—… ( resource μΆ”κ°€, yml μΆ”κ°€ λ“± )
[FIX] μ½”λ“œ μˆ˜μ •
[FEAT] μƒˆλ‘œμš΄ κΈ°λŠ₯ κ΅¬ν˜„
[ADD] μ½”λ“œ μΆ”κ°€
[HOTFIX] κΈ‰ν•œ 사항
[DEL] μ½”λ“œ μ‚­μ œ
[DOCS] README λ“±μ˜ λ¬Έμ„œ κ°œμ •
[REFACTOR] 파일 이름 λ³€κ²½, ꡬ쑰 λ³€κ²½ λ“±μ˜ μ „λ©΄ μˆ˜μ •
[TEST] ν…ŒμŠ€νŠΈ μ½”λ“œ

✨ Branch Strategy

git μ „λž΅ - git flow μ „λž΅

  • main : 초기 ν”„λ‘œμ νŠΈ μ„€μ • 브랜치
  • develop : 개발(μž‘μ—…) 브랜치: ν•΄λ‹Ή 브랜치둜 push ν•  경우 CD
  • 이름_#이슈번호 : μ΄μŠˆλ³„ 개발 브랜치
  • 이름 : 개인 μž‘μ—… 브랜치

πŸ“ƒ API λͺ…μ„Έμ„œ

API λͺ…μ„Έμ„œ Swagger

API λͺ…μ„Έμ„œ λ¬Έμ„œν™” Wiki

API λͺ…μ„Έμ„œ μ΄ˆμ•ˆ Nostion


πŸ₯« ERD

image


πŸ—‚ ν”„λ‘œμ νŠΈ 폴더 ꡬ쑰

MVC 기반

πŸ“ src
|_ πŸ“ main
|_ |_ πŸ“ common
|_ |_ πŸ“ config
|_ |_ πŸ“ constrant
|_ |_ πŸ“ controller
|_ |_ πŸ“ dto
|_ |_ πŸ“ exception
|_ |_ πŸ“ model
|_ |_ πŸ“ repository
|_ |_ πŸ“ services
|_ |_ πŸ“ util
|_ πŸ“ test


🌴 Dependencies Module

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis-reactive'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter:3.1.5'
    implementation 'org.flywaydb:flyway-core'
    implementation 'org.flywaydb:flyway-mysql'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    implementation 'io.jsonwebtoken:jjwt:0.9.1'
    implementation 'org.redisson:redisson-spring-boot-starter:3.18.0'

    testImplementation 'org.projectlombok:lombok:1.18.22'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.h2database:h2'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    testImplementation 'org.springframework.security:spring-security-test'
    testImplementation 'org.testcontainers:junit-jupiter'
    testImplementation 'org.testcontainers:mysql'
    testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
    testImplementation 'com.epages:restdocs-api-spec-mockmvc:0.16.4'
    testImplementation "org.junit.jupiter:junit-jupiter-params"
    testImplementation 'io.findify:s3mock_2.13:0.2.6'
    implementation 'com.google.guava:guava:31.1-jre'
    swaggerUI 'org.webjars:swagger-ui:4.1.3'

    implementation "ca.pjer:logback-awslogs-appender:1.6.0"
    implementation 'com.amazonaws:aws-java-sdk-bom:1.12.417'
    implementation 'com.amazonaws:aws-java-sdk-s3:1.12.410'
}


☘ environment variables


/localTestDB/db_info.env

MYSQL_DATABASE=
MYSQL_USER=
MYSQL_PASSWORD=
MYSQL_ROOT_PASSWORD=

/sensitive.env

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
TOKEN_SECRET=
REFRESH_TOKEN_SECRET=
FRONT_URI=
FRONT_REDIRECT_PATH=
BACK_URI=
SECRET_KEY= 
REDIS_HOST=

πŸ— Architecture

image

About

🎧이런 λ…Έλž˜ μ–΄λ– μ„Έμš”? Cuz I Hype~~ 🎧 [Hype]

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published