Skip to content

여러 SNS 게시물을 한곳에서 확인할 수 있는 소셜 미디어 통합 서비스 👥

Notifications You must be signed in to change notification settings

ryuneng/socialhub

 
 

Repository files navigation

📲 SocialHub

🔍 목차

  1. 서비스 소개
  2. R&R 및 주요 소스 코드
  3. 프로젝트 일정
  4. 프로젝트 환경
  5. API 명세서
  6. ERD
  7. 협업 및 커뮤니케이션
  8. Github Issue & Jira 를 통한 Task 트래킹 관리 (WBS)
  9. Discord를 활용한 소통 및 PR 알림 봇
  10. 트러블 슈팅
  11. 고민한 흔적
  12. 디렉토리 구조

📋 서비스 소개

  • 해시태그를 기반으로 인스타그램, 스레드, 페이스북, 트위터(X) 등 복수의 SNS에 게시된 게시물 중 해시태그가 포함된 게시물들을 하나의 서비스에서 확인할 수 있는 통합 Feed 어플리케이션의 API 서버입니다.

🧑🏻‍💻 R&R

담당자 담당 업무
오예령 게시물 기능 구현 (등록, 수정, 삭제, 검색)
유리빛나 게시물 기능 구현 (목록 조회, 상세 조회, 좋아요, 공유)
김유현 통계 기능 구현 (서비스 및 컨트롤러, 단위 테스트)
김은정 사용자 기능 구현 (로그인, 계정 중복 확인)
김효진 통계 기능 구현 (서비스 및 레포지토리, 스웨거)
배서진 사용자 기능 구현 (회원가입, 이메일 인증, 회원정보 수정)

담당 업무 소스 코드

  1. Controller 코드 보기
  2. Service 코드 보기
  3. Repository 코드 보기
  4. 주요 테스트 코드 보기

🗓 프로젝트 일정

image

🛠️ 프로젝트 환경

Stack Version
Spring Spring Boot 3.3.x
Gradle Gradle 8.8
Java JDK 17
MySQL MySQL 8.0
Redis Redis 6.0

📄 API 명세서

자세한 명세는 🔗여기 (POSTMAN API 명세)를 클릭해 확인해주세요!

도메인 기능명 Http Method API Path 인증 담당자
게시물 게시물 목록 조회 GET /api/posts O 유리빛나
게시물 게시물 상세 조회 GET /api/posts/{postId} O 유리빛나
게시물 게시물 좋아요 POST /api/posts/{postId}/like O 유리빛나
게시물 게시물 공유 POST /api/posts/{postId}/share O 유리빛나

⛓️ ERD

image

🗣️ 협업 및 커뮤니케이션

문서화 작업

🏃‍♀️‍➡️ Github Issue & Jira 를 통한 Task 트래킹 관리 (WBS)

개발일정 관리

🤖 Discord를 활용한 소통 및 PR 알림 봇

소통 및 PR 알림 확인

💥 트러블 슈팅

  • DB에 저장된 데이터에 따라 테스트 결과가 달라지는 문제 - WIKI 이동
  • 테스트 실행 순서에 따라 일부 테스트가 실패하는 문제 - WIKI 이동
  • QueryDSL 사용 중 발생한 문제 - WIKI 이동

🤔 고민한 흔적

  • JPA 엔티티의 식별자 변수명 - WIKI 이동
  • 게시물 목록 응답 DTO의 생성 및 수정 시간 필드 타입 (LocalDateTime vs String) - WIKI 이동
  • ERD 게시물 조회 테이블의 필요성 - WIKI 이동

🗂️ 디렉토리 구조

디렉토리 구조
C:.
│   .env
│   .gitignore
│   build.gradle
│   docker-compose.yml
│   settings.gradle
├───.github
│   ├───ISSUE_TEMPLATE
│   └───workflows
├───build
└───src
    ├───main
    │   ├───java
    │   │   └───com
    │   │       └───allclear
    │   │           └───socialhub
    │   │               ├───common
    │   │               ├───post
    │   │               └───user
    │   └───resources
    └───test
        ├───java
        │   └───com
        │       └───allclear
        │           └───socialhub
        └───resources

📦socialhub
 ┣ 📂common
 ┃ ┣ 📂config
 ┃ ┃ ┣ 📜ConverterConfig.java
 ┃ ┃ ┣ 📜JpaConfig.java
 ┃ ┃ ┣ 📜RedisConfig.java
 ┃ ┃ ┣ 📜SwaggerConfig.java
 ┃ ┃ ┗ 📜WebSecurityConfig.java
 ┃ ┣ 📂converter
 ┃ ┃ ┣ 📜StringToStatisticTypeConverter.java
 ┃ ┃ ┗ 📜StringToStatisticValueConverter.java
 ┃ ┣ 📂domain
 ┃ ┃ ┗ 📜Timestamped.java
 ┃ ┣ 📂exception
 ┃ ┃ ┣ 📂handler
 ┃ ┃ ┃ ┗ 📜GlobalExceptionHandler.java
 ┃ ┃ ┣ 📜CustomException.java
 ┃ ┃ ┣ 📜ErrorCode.java
 ┃ ┃ ┗ 📜ErrorResponse.java
 ┃ ┣ 📂provider
 ┃ ┃ ┗ 📜JwtTokenProvider.java
 ┃ ┗ 📂util
 ┃ ┃ ┣ 📜DateUtil.java
 ┃ ┃ ┗ 📜TokenUtil.java
 ┣ 📂post
 ┃ ┣ 📂common
 ┃ ┃ ┣ 📂hashtag
 ┃ ┃ ┃ ┣ 📂domain
 ┃ ┃ ┃ ┃ ┣ 📜Hashtag.java
 ┃ ┃ ┃ ┃ ┗ 📜PostHashtag.java
 ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┣ 📜HashtagRepository.java
 ┃ ┃ ┃ ┃ ┗ 📜PostHashtagRepository.java
 ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┣ 📜HashtagService.java
 ┃ ┃ ┃ ┃ ┗ 📜HashtagServiceImpl.java
 ┃ ┃ ┣ 📂like
 ┃ ┃ ┃ ┣ 📂domain
 ┃ ┃ ┃ ┃ ┗ 📜PostLike.java
 ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┗ 📜PostLikeResponse.java
 ┃ ┃ ┃ ┗ 📂repository
 ┃ ┃ ┃ ┃ ┗ 📜PostLikeRepository.java
 ┃ ┃ ┣ 📂response
 ┃ ┃ ┃ ┗ 📜StatisticQueryResponse.java
 ┃ ┃ ┣ 📂share
 ┃ ┃ ┃ ┣ 📂domain
 ┃ ┃ ┃ ┃ ┗ 📜PostShare.java
 ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┗ 📜PostShareResponse.java
 ┃ ┃ ┃ ┗ 📂repository
 ┃ ┃ ┃ ┃ ┗ 📜PostShareRepository.java
 ┃ ┃ ┗ 📂view
 ┃ ┃ ┃ ┣ 📂domain
 ┃ ┃ ┃ ┃ ┗ 📜PostView.java
 ┃ ┃ ┃ ┗ 📂repository
 ┃ ┃ ┃ ┃ ┗ 📜PostViewRepository.java
 ┃ ┣ 📂controller
 ┃ ┃ ┣ 📜PostController.java
 ┃ ┃ ┗ 📜StatisticController.java
 ┃ ┣ 📂domain
 ┃ ┃ ┣ 📜Post.java
 ┃ ┃ ┣ 📜PostType.java
 ┃ ┃ ┣ 📜SearchByType.java
 ┃ ┃ ┣ 📜StatisticType.java
 ┃ ┃ ┗ 📜StatisticValue.java
 ┃ ┣ 📂dto
 ┃ ┃ ┣ 📜PostCreateRequest.java
 ┃ ┃ ┣ 📜PostDetailResponse.java
 ┃ ┃ ┣ 📜PostListResponse.java
 ┃ ┃ ┣ 📜PostPaging.java
 ┃ ┃ ┣ 📜PostResponse.java
 ┃ ┃ ┣ 📜PostUpdateRequest.java
 ┃ ┃ ┣ 📜StatisticRequestParam.java
 ┃ ┃ ┗ 📜StatisticResponse.java
 ┃ ┣ 📂repository
 ┃ ┃ ┣ 📂querydsl
 ┃ ┃ ┃ ┣ 📜PostRepositoryImpl.java
 ┃ ┃ ┃ ┗ 📜PostRepositoryQuerydsl.java
 ┃ ┃ ┗ 📜PostRepository.java
 ┃ ┗ 📂service
 ┃ ┃ ┣ 📜PostService.java
 ┃ ┃ ┣ 📜PostServiceImpl.java
 ┃ ┃ ┣ 📜StatisticService.java
 ┃ ┃ ┗ 📜StatisticServiceImpl.java
 ┣ 📂user
 ┃ ┣ 📂controller
 ┃ ┃ ┗ 📜UserController.java
 ┃ ┣ 📂domain
 ┃ ┃ ┗ 📜User.java
 ┃ ┣ 📂dto
 ┃ ┃ ┣ 📜UserEmailRequest.java
 ┃ ┃ ┣ 📜UserInfoUpdateRequest.java
 ┃ ┃ ┣ 📜UserInfoUpdateResponse.java
 ┃ ┃ ┣ 📜UserJoinRequest.java
 ┃ ┃ ┣ 📜UserLoginRequest.java
 ┃ ┃ ┗ 📜UserResponse.java
 ┃ ┣ 📂exception
 ┃ ┃ ┗ 📜DuplicateUserInfoException.java
 ┃ ┣ 📂repository
 ┃ ┃ ┣ 📜EmailRedisRepository.java
 ┃ ┃ ┗ 📜UserRepository.java
 ┃ ┣ 📂service
 ┃ ┃ ┣ 📜EmailService.java
 ┃ ┃ ┣ 📜EmailServiceImpl.java
 ┃ ┃ ┣ 📜UserService.java
 ┃ ┃ ┗ 📜UserServiceImpl.java
 ┃ ┗ 📂type
 ┃ ┃ ┣ 📜EmailType.java
 ┃ ┃ ┣ 📜UserCertifyStatus.java
 ┃ ┃ ┣ 📜UsernameDupStatus.java
 ┃ ┃ ┗ 📜UserStatus.java
 ┗ 📜SocialhubApplication.java

About

여러 SNS 게시물을 한곳에서 확인할 수 있는 소셜 미디어 통합 서비스 👥

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.7%
  • HTML 0.3%