Skip to content

Commit

Permalink
기존 프로젝트 카피
Browse files Browse the repository at this point in the history
  • Loading branch information
EunChanNam committed Oct 19, 2023
0 parents commit eb0853f
Show file tree
Hide file tree
Showing 262 changed files with 14,039 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## 🤷 버그 내용

## ⚠ 버그 재현 방법 (ex: 어떤 입력값과 어떤 행동을 했을 때 버그가 발생했는지)

1.
2.
3.

## 📸 스크린샷

## 👄 참고 사항
9 changes: 9 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## 🤷 구현할 기능

## 🔨 상세 작업 내용

- [ ] To-do 1
- [ ] To-do 2
- [ ] To-do 3

## 📄 참고 사항
8 changes: 8 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## 이슈 번호

## 작업 내용

## 스크린샷
> 작성하지 않아도 됩니다.
## 주의사항
> 작성하지 않아도 됩니다.
51 changes: 51 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### private ###
.idea
.DS_Store

### application.yml ###
application-dev.yml

### sql ###
**/src/main/resources/sql/

### images ###
**/src/main/resources/static/
**/src/test/resources/images/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml경
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
71 changes: 71 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# We-Share-Wish-Hair - Backend
💇‍♀️ AI 기반 헤어스타일 추천 어플리케이션 💇‍♂️

## ✅ 테스트
### 커버리지
<img src="https://github.com/EunChanNam/We-Share-Wish-Hair/assets/75837025/a497ae0a-568c-4443-a7d8-029a5b651946" width="50%">


## ⚙️ 개발 환경
* Language : Java 17
* Framework : Spring Boot 2.7.7
* IDE : Intellij

## 💻 배포 환경
* Cloud : Naver Cloud Platform
* Storage : Naver Cloud Object Storage
* Server : ubuntu-18.04
* DB : MySQL 8.0
* CI/CD : Jenkins, Docker

## 🛠️ 기술 스택
* Java
* Spring Boot
* Spring Data JPA
* Query Dsl
* RestDocs
* JUnit5
* MySQL
* Jenkins
* Docker

## 🕹️ API 목록
### 인증
* 로그인 API
* 로그아웃 API
* 이메일 중복체크 API
* 검증 메일 발송 API
* 메일 검증 API
* OAUTH LINK 요청 API
* OAUTH 로그인 요청 API
* 토큰 재발급 API

### 사용자
* 회원가입 API
* 회원 탈퇴 API
* 회원 정보 수정 API
* 비밀번호 변경 API
* 비밀번호 갱신 API
* 사용자 얼굴형 업데이트 API

### 헤어스타일
* 메인 헤어스타일 추천 API
* 사용자 얼굴형 기반 헤어스타일 추천 API
* 찜한 헤어스타일 조회 API
* 전체 헤어스타일 조회 API
* 찜하기 API
* 찜 취소 API
* 찜 여부 조회 API

### 리뷰
* 리뷰 생성 API
* 리뷰 삭제 API
* 리뷰 수정 API
* 리뷰 단건 조회 API
* 전체 리뷰 조회 API
* 나의 리뷰 조회 API
* 이달의 추천 리뷰 조회 API
* 헤어스타일의 리뷰 조회 API
* 좋아요 실행 API
* 좋아요 취소 API
* 좋아요 여부 조회 API
140 changes: 140 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.7'
id 'io.spring.dependency-management' version '1.1.0'

//RestDocs - Asciidoctor 플러그인 적용
id "org.asciidoctor.jvm.convert" version "3.3.2"

//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

group = 'com.inq.wish-hair'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
asciidoctorExtensions // dependencies 에서 적용한 것 추가
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

ext {
// RestDocs - 아래서 사용할 변수
snippetsDir = file('build/generated-snippets')
}

dependencies {
//P6Spy
implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0")

//javax.annotation import 버그 해결
implementation 'javax.annotation:javax.annotation-api:1.3.2'

//jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
implementation 'javax.xml.bind:jaxb-api:2.3.0' //jwt 토큰 생성시 에러 해결

//test
testImplementation 'org.springframework.boot:spring-boot-starter-test'

//JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

//spring
implementation 'org.springframework.boot:spring-boot-starter-web'

//validation
implementation 'org.springframework.boot:spring-boot-starter-validation'

//mail
implementation 'org.springframework.boot:spring-boot-starter-mail'

//thymeleaf
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

//lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok' // 테스트 의존성 추가
testAnnotationProcessor 'org.projectlombok:lombok' // 테스트 의존성 추가

//DB
runtimeOnly 'com.mysql:mysql-connector-j'
runtimeOnly 'com.h2database:h2' //h2 DB - Test 전용

// RestDocs
asciidoctorExtensions 'org.springframework.restdocs:spring-restdocs-asciidoctor'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'

//네이버 클라우드
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

//Spring Security
implementation 'org.springframework.boot:spring-boot-starter-security'

//Query Dsl
implementation "com.querydsl:querydsl-jpa:5.0.0"
implementation "com.querydsl:querydsl-apt:5.0.0"
}

tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
}

tasks.named('asciidoctor') {
configurations 'asciidoctorExtensions'
baseDirFollowsSourceFile()
inputs.dir snippetsDir
dependsOn test
}

asciidoctor.doFirst {
delete file('src/main/resources/static/docs/*')
}

task copyDocument(type: Copy) {
dependsOn asciidoctor
from file("build/docs/asciidoc")
into file("src/main/resources/static/docs")
}

build {
dependsOn copyDocument
}

bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}

//querydsl 추가
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit eb0853f

Please sign in to comment.