Skip to content

M-ung/TicToc_Server

Repository files navigation

⏰ TicToc - Server

🖥️ 프로젝트 소개

당신의 시간에 가치를 매기다, 시간 거래 경매 플랫폼입니다.

🕰️ 개발 기간

  • 25.01.11 - 진행 중

⚙️ 개발 환경

  • Java : 21
  • IDE : IntelliJ IDEA
  • Framework : Springboot(3.3.7)
  • Database : MySQL
  • ORM : Hibernate (Spring Data JPA 사용)

🧑‍🤝‍🧑 멤버 구성

🟢 ERD

🛠️ 시스템 아키텍처

🛠️ 소프트웨어 아키텍처

📝 규칙

  • 1️⃣ 커밋 컨벤션 규칙

    • Feat: 새로운 기능 추가
    • Fix: 버그 수정
    • Docs: 문서 수정
    • Style: 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
    • Refactor: 코드 리팩토링
    • Test: 테스트 코드, 리팩토링 테스트 코드 추가
    • Chore: 빌드 업무 수정, 패키지 매니저 수정
  • 2️⃣ Branch 규칙

    • 각자의 깃 타입과 이슈번호를 딴 branch 명을 사용한다.
    • 예시
      • git checkout -b 타입/#이슈번호
      • git checkout -b feature/#5
  • 3️⃣ Commit message 규칙

    • "타입(앞글자를 대문자로): 커밋 메세지 - #이슈번호" 형식으로 작성한다.
    • 예시
      • Feat: 커밋 내용 - #이슈번호
      • Feat: 로그인 구현 - #5
    • 아래 참고 자료를 최대한 활용한다.
  • 4️⃣ 쓰기/읽기 규칙

    • 쓰기 기능
      • 객체 이름
        • 엔티티 + Command + 계층
        • 예시
          • UserCommandController
      • Transactional
        • @Transactional
    • 조회 기능
      • 객체 이름
        • 엔티티 + Query + 계층
        • 예시
          • UserQueryService
      • Transactional
        • @Transactional(readOnly = true)
  • 5️⃣ DTO 규칙

    • DTO 이름
      • 엔티티명 + Response/Request + DTO
      • 예시
        • UserResponseDTO
        • PostRequestDTO
    • DTO 타입
      • Default -> record
      • Querydsl 사용시 -> class

🔥 TroubleShooting

📁 디렉토리 구조

tictoc-api ## 🗂️ API 관련 모듈
├── Dockerfile
├── build.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── tictoc
    │   │       ├── TicTocApiApplication.java
    │   │       ├── auction 
    │   │       │   ├── adapter (## 🗂️ API 요청을 처리하는 컨트롤러)
    │   │       │   ├── dto (## 🗂️ 데이터 전송 객체)
    │   │       │   ├── mapper (## 🗂️ 객체 변환)
    │   │       │   ├── port (## 🗂️ 비지니스 로직 인터페이스)
    │   │       │   ├── application (## 🗂️ 비지니스 로직 구현체)
    │   │       ├── bid
    │   │       │   ├── adapter (## 🗂️ API 요청을 처리하는 컨트롤러)
    │   │       │   ├── dto (## 🗂️ 데이터 전송 객체)
    │   │       │   ├── mapper (## 🗂️ 객체 변환)
    │   │       │   ├── port (## 🗂️ 비지니스 로직 인터페이스)
    │   │       │   ├── application (## 🗂️ 비지니스 로직 구현체)
    │   │       ├── user
    │   │       │   ├── adapter (## 🗂️ API 요청을 처리하는 컨트롤러)
    │   │       │   ├── dto (## 🗂️ 데이터 전송 객체)
    │   │       │   ├── mapper (## 🗂️ 객체 변환)
    │   │       │   ├── port (## 🗂️ 비지니스 로직 인터페이스)
    │   │       │   ├── application (## 🗂️ 비지니스 로직 구현체)
    │   │       ├── config
    │   │       │   ├── CorsFilter.java 
    │   │       │   ├── SpringDocOpenApiConfig.java (## 📄 Swagger)
    │   │       │   ├── WebConfig.java
    │   │       │   └── security
    │   ├── resources
    │   │   ├── application.yml (## 📄 공통 application.yml)
    │   │   ├── application-dev.yml (## 📄 개발 application.yml)
    │   │   ├── application-prod.yml (## 📄 배포 application.yml)

tictoc-batch (## 🗂️ Spring Batch 관련 모듈)
├── Dockerfile
├── build.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── tictoc
    │   │       ├── TicTocBatchApplication.java
    │   │       ├── userLoginHistory
    │   │       │   ├── config (## 🗂️ Spring Batch)
    │   │       │   ├── event (## 🗂️ Kafka Consumer)
    │   │       │   ├── scheduler (## 🗂️ Spring Batch Scheduler)
    │   ├── resources
    │   │   ├── application.yml (## 📄 공통 application.yml)
    │   │   ├── application-dev.yml (## 📄 개발 application.yml)
    │   │   ├── application-prod.yml (## 📄 배포 application.yml)

tictoc-common (## 🗂️ 공통 로직 관련 모듈)
├── build.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── tictoc
    │   │       ├── TicTocCommonApplication.java
    │   │       ├── annotation (## 🗂️ 커스텀 어노테이션)
    │   │       ├── aspect (## 🗂️ AOP)
    │   │       ├── config (## 🗂️ 공통 설정)
    │   │       ├── constants (## 🗂️ 공통 상수)
    │   │       ├── error (## 🗂️ 커스텀 에러)
    │   │       ├── model (## 🗂️ 공통 객체)
    │   ├── resources
    │   │   ├── application-common.yml (## 📄 common application.yml)

tictoc-domain (## 🗂️ 도메인 관련 모듈)
├── build.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── tictoc
    │   │       ├── TicTocDomainApplication.java
    │   │       ├── auction
    │   │       │   ├── adapter (## 🗂️ DB와 연결하는 구현체)
    │   │       │   ├── dto (## 🗂️ 데이터 전송 객체)
    │   │       │   ├── event (## 🗂️ Redis Event)
    │   │       │   ├── exception (## 🗂️ 커스텀 예러)
    │   │       │   ├── model (## 🗂️ 도메인 엔티티)
    │   │       │   ├── port (## 🗂️ DB와 연결하는 인터페이스)
    │   │       │   ├── repository (## 🗂️ DB와 접근하는 저장소)
    │   │       ├── bid
    │   │       │   ├── adapter (## 🗂️ DB와 연결하는 구현체)
    │   │       │   ├── dto (## 🗂️ 데이터 전송 객체)
    │   │       │   ├── exception (## 🗂️ 커스텀 예러)
    │   │       │   ├── model (## 🗂️ 도메인 엔티티)
    │   │       │   ├── port (## 🗂️ DB와 연결하는 인터페이스)
    │   │       │   ├── repository (## 🗂️ DB와 접근하는 저장소)
    │   │       ├── config (## 🗂️ 도메인 설정)
    │   │       ├── notification
    │   │       │   ├── model (## 🗂️ 도메인 엔티티)
    │   │       ├── payment
    │   │       │   ├── model (## 🗂️ 도메인 엔티티)
    │   │       ├── propfile
    │   │       │   ├── adapter (## 🗂️ DB와 연결하는 구현체)
    │   │       │   ├── model (## 🗂️ 도메인 엔티티)
    │   │       │   ├── port (## 🗂️ DB와 연결하는 인터페이스)
    │   │       │   ├── repository (## 🗂️ DB와 접근하는 저장소)
    │   │       ├── user
    │   │       │   ├── adapter (## 🗂️ DB와 연결하는 구현체)
    │   │       │   ├── dto (## 🗂️ 데이터 전송 객체)
    │   │       │   ├── exception (## 🗂️ 커스텀 예러)
    │   │       │   ├── model (## 🗂️ 도메인 엔티티)
    │   │       │   ├── port (## 🗂️ DB와 연결하는 인터페이스)
    │   │       │   ├── repository (## 🗂️ DB와 접근하는 저장소)
    │   ├── resources
    │   │   ├── application-domain.yml (## 📄 domain application.yml)

tictoc-external (## 🗂️ 와부 로직 관련 모듈)
├── build.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── tictoc
    │   │       ├── TicTocExternalApplication.java
    │   │       │   ├── config (## 🗂️ openFeign 설정)
    │   │       ├── kakao (## 🗂️ Kakao 연결)
    │   ├── resources
    │   │   ├── application-external.yml (## 📄 external application.yml)

tictoc-infrastructure (## 🗂️ Redis, Kafka 관련 모듈)
├── build.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── tictoc
    │   │       ├── TicTocInfrastructureApplication.java
    │   │       ├── kafka 
    │   │       │   ├── config (## 🗂️ Kafka 설정)
    │   │       │   ├── event (## 🗂️ Kafka Producer)
    │   │       │   ├── exception (## 🗂️ 커스텀 예러)
    │   │       ├── redis 
    │   │       │   ├── auction
    │   │       │   │   ├── adapter (## 🗂️ Redis 비지니스 로직 구현체)
    │   │       │   │   ├── port (## 🗂️ Redis 비지니스 로직 인터페이스)
    │   │       │   ├── config (## 🗂️ Redis 설정)
    │   │       │   ├── exception (## 🗂️ 커스텀 예러)
    │   ├── resources
    │   │   ├── application-infrastructure.yml (## 📄 infrastructure application.yml)

📚 참고 자료

About

TicToc Server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published