- 해시태그를 기반으로
인스타그램
,스레드
,페이스북
,트위터(X)
등 복수의 SNS에 게시된 게시물 중 해시태그가 포함된 게시물들을 하나의 서비스에서 확인할 수 있는 통합 Feed 어플리케이션의 API 서버입니다.
담당자 | 담당 업무 |
---|---|
오예령 | 게시물 기능 구현 (등록, 수정, 삭제, 검색) |
유리빛나 | 게시물 기능 구현 (목록 조회, 상세 조회, 좋아요, 공유) |
김유현 | 통계 기능 구현 (서비스 및 컨트롤러, 단위 테스트) |
김은정 | 사용자 기능 구현 (로그인, 계정 중복 확인) |
김효진 | 통계 기능 구현 (서비스 및 레포지토리, 스웨거) |
배서진 | 사용자 기능 구현 (회원가입, 이메일 인증, 회원정보 수정) |
Stack | Version |
---|---|
Spring Boot 3.3.x | |
Gradle 8.8 | |
JDK 17 | |
MySQL 8.0 | |
Redis 6.0 |
자세한 명세는 🔗여기 (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 |
유리빛나 |
- 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