Skip to content

SmileJune/dadamda-backend

 
 

Repository files navigation

수정일 : 2023-08-04 12:15

Dadamda Backend

📰 프로젝트 소개

모든 사이트의 URL을 담을 수 있고 여러 스크랩들을 모아 사용자가 보드를 꾸미고 공유할 수 있는 웹 서비스입니다.

🐳 개발 환경

  • Java 11 Amazon Corretto version 11.0.20
  • Spring Boot 2.7.13
  • Gradle 7.6.1
  • JPA 3.1.2
  • AWS RDS MySQL 8.0.32
  • GitHub Actions

🖥️ 관리 도구

  • 형상 관리 : Github
  • 이슈 관리 : Jira
  • 커뮤니케이션 : Confluence
  • 디자인 : Figma

💭 프로젝트 구조

src
 ┣ main
 ┃ ┣ generated
 ┃ ┣ java
 ┃ ┃ ┗ com
 ┃ ┃ ┃ ┗ forever
 ┃ ┃ ┃ ┃ ┗ dadamda
 ┃ ┃ ┃ ┃ ┃ ┣ config
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ SecurityConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ SwaggerConfig.java
 ┃ ┃ ┃ ┃ ┃ ┣ controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ MemoController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ ScrapController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserController.java
 ┃ ┃ ┃ ┃ ┃ ┣ dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ scrap
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateHighlightRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateHighlightResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateMemoRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateScrapRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CreateScrapResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetArticleCountResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetArticleResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetMemoResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetOtherCountResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetOtherResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetProductCountResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetProductResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetScrapCountResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetScrapResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetVideoCountResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetVideoResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UpdateScrapRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ user
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetProfileUrlResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ GetUserInfoResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ OAuthAttributes.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ ApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ ErrorCode.java
 ┃ ┃ ┃ ┃ ┃ ┣ entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ scrap
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Article.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Other.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Product.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Scrap.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ Video.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ user
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Provider.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ Role.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ User.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ BaseTimeEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ Memo.java
 ┃ ┃ ┃ ┃ ┃ ┣ exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ advice
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ControllerExceptionAdvice.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ GeneralException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ InternalServerException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ InvalidException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ NotFoundException.java
 ┃ ┃ ┃ ┃ ┃ ┣ filter
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ JwtAuthFilter.java
 ┃ ┃ ┃ ┃ ┃ ┣ handler
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ OAuth2SuccessHandler.java
 ┃ ┃ ┃ ┃ ┃ ┣ repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ ArticleRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ MemoRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ OtherRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ ProductRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ ScrapRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ UserRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ VideoRepository.java
 ┃ ┃ ┃ ┃ ┃ ┣ service
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ scrap
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ArticleService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ OtherService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ProductService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ ScrapService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ VideoService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ user
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ CustomOAuth2UserService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UserService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ MemoService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ TimeService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ TokenService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ WebClientService.java
 ┃ ┃ ┃ ┃ ┃ ┗ DadamdaApplication.java
 ┃ ┗ resources
 ┃ ┃ ┣ application-dev-secret.yml
 ┃ ┃ ┣ application-prod-secret.yml
 ┃ ┃ ┗ application.yml
 ┗ test
 ┃ ┗ java
 ┃ ┃ ┗ com
 ┃ ┃ ┃ ┗ forever
 ┃ ┃ ┃ ┃ ┗ dadamda
 ┃ ┃ ┃ ┃ ┃ ┗ DadamdaApplicationTests.java

📂 ERD

erDiagram
    USER ||--o{ SCRAP : ""
    SCRAP ||--o{ ARTICLE : ""
    SCRAP ||--o{ VIDEO : ""
    SCRAP ||--o{ PRODUCT : ""
    SCRAP ||--o{ OTHER : ""
    SCRAP ||--o{ MEMO : ""
    SCRAP ||--o{ SCRAP_BOARD : ""
    BOARD ||--o{ SCRAP_BOARD : ""
    USER ||--|{ HEART : ""
    BOARD ||--|{ HEART : ""
    USER ||--o{ BOARD : ""

    ENTITY BASETIME {
    timestamp CREATED_DATE
    timestamp UPDATED_DATE
    timestamp DELETED_DATE
}

    ENTITY USER {
    BIGINT ID PK
    VARCHAR(100) NAME
    VARCHAR(320) EMAIL
    VARCHAR(2083) PROFILE_URL
    ENUM PROVIDER
    ENUM ROLE
    VARCHAR(36) UUID
}

    ENTITY SCRAP {
    BIGINT ID PK
    BIGINT USER_ID FK
    ENUM D_TYPE
    VARCHAR(2083) PAGE_URL
    VARCHAR(200) TITLE
    VARCHAR(2083) THUMBNAIL_URL
    text DESCRIPTION
    VARCHAR(100) SITE_NAME
}

    ENTITY ARTICLE {
    BIGINT SCRAP_ID PK, FK
    text AUTHOR
    VARCHAR(2083) AUTHOR_IMAGE_URL
    timestamp PUBLISHED_DATE
    VARCHAR(100) BLOG_NAME
}

    ENTITY VIDEO {
    BIGINT SCRAP_ID PK, FK
    VARCHAR(2083) EMBED_URL
    VARCHAR(100) CHANNEL_NAME
    VARCHAR(2083) CHANNEL_IMAGE_URL
    BIGINT WATCHED_CNT
    BIGINT PLAY_TIME
    timestamp PUBLISHED_DATE
    VARCHAR(100) GENRE
}

    ENTITY PRODUCT {
    BIGINT SCRAP_ID PK, FK
    VARCHAR(100) PRICE
}

    ENTITY OTHER {
    BIGINT SCRAP_ID PK, FK
}

    ENTITY MEMO {
    BIGINT ID PK
    BIGINT SCRAP_ID FK
    VARCHAR(1000) MEMO_TEXT
    VARCHAR(2083) MEMO_IMAGE_URL
}

    ENTITY BOARD {
    BIGINT ID PK
    VARCHAR(36) UUID
    BIGINT USER_ID FK
    VARCHAR(100) NAME
    BOOLEAN IS_PUBLIC
}

    ENTITY SCRAP_BOARD {
    BIGINT BOARD_ID PK
    BIGINT SCRAP_ID FK
    BIGINT MEMO_ID FK
    DOUBLE X
    DOUBLE Y
    DOUBLE WIDTH
    DOUBLE HEIGHT
}

    ENTITY HEART {
    BIGINT ID PK
    BIGINT USER_ID FK
    BIGINT BOARD_ID FK
}

Loading

✨ 팀원 소개

윤일준 (제이크) 한다연 (다나) 김신영 (제로)
백엔드, 인프라 백엔드, 크롬익스텐션 프론트엔드

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.7%
  • Other 0.3%