나만의 패션 취향 정립 서비스
무딧은 사진을 비교하며 선택 기준을 발견하고, 경험의 만족도까지 쌓아 수집을 넘어 취향을 정립할 수 있도록 도와주는 서비스입니다.
- 무드 매치 만들기 : 유저는 사진을 직접 선택해 무드 매치를 만들 수 있습니다.
- 무드 매치 진행하기 : 유저는 끌리는 이미지를 선택하고, 토너먼트를 통해 취향의 범위를 좁힙니다.
- 경험 미션 : 무드 매치를 통해 제안된 경험 미션을 통해 유저는 선택한 취향을 직접 경험하고 만족도를 기록합니다
- 취향 리포트 : 무드 매치를 바탕으로 선택과 경험 누적 데이터를 분석하여 나만의 취향을 시각화합니다
Language - Java 21 (LTS)Framework - Spring Boot 4.0.6Database - PostgreSQL 18.4ORM - Spring Data JPAStorage - MinIOCI/CD - Docker Compose, GitHub ActionsMonitoring - Dozzle
Core 영역의 개념의 오염을 방지하고 외부 의존성을 줄이기 위해 Multi-Module 방식의 모놀리스 구조를 채택했습니다.
moodit-server
├── 📂 clients # 외부 API 클라이언트 모듈
│ └── client-kakao # 카카오 외부 API
│
├── 📂 core # Core 모듈
│ └── core-api # Core API 패키징
│ ├── api # API 관련 패키징
│ │ ├── assembler # 여러 개념을 Presentation 레이어로 응집하는 계층
│ │ ├── config # WebMvcConfigurer 등 Presentation 레이어의 설정
│ │ ├── controller
│ │ └── MooditApiApplication.kt
│ │
│ ├── domain # 핵심 개념(도메인) 객체 및 비즈니스 로직(Service), 구현 로직
│ │ ├── enums # Enum 패키징
│ │ ├── auth # [인증] 도메인 컨텍스트
│ │ ├── match # [무드매치] 도메인 컨텍스트
│ │ ├── mission # [미션] 도메인 컨텍스트
│ │ ├── missionOffer # [미션제안] 도메인 컨텍스트
│ │ ├── report # [리포트] 도메인 컨텍스트
│ │ ├── review # [미션 피드백] 도메인 컨텍스트
│ │ ├── user # [유저] 도메인 컨텍스트
│ │ ├── userMission # [유저미션] 도메인 컨텍스트
│ ├── storage.db # Persistant를 담당하는 Storage 패키징
│ └── support
│ ├── auth # 인증/인가 담당
│ ├── error # 공통 에러 코드 및 예외
│ ├── file # 파일 업로드 로직
│ └── response # 공통 응답 객체
│
└── 📂 .github
└── workflows
├── ci-dev.yml
├── cd-dev.yml
├── ci-live.yml
└── cd-live.yml