Architecture • Package Structure • Related Repositories • Getting Started
프로젝트는 DDD(Domain-Driven Design) 기반으로 설계되었습니다.
com.mycodingtest/
├── judgment/ # 채점 도메인 - 플랫폼별 채점 결과 관리
├── problem/ # 문제 도메인 - 알고리즘 문제 정보 관리
├── review/ # 리뷰 도메인 - 오답노트 및 복습 기능
├── user/ # 사용자 도메인 - OAuth 인증 및 프로필
├── collector/ # 수집 도메인 - 외부 플랫폼 데이터 통합
├── query/ # CQRS Query Side - 조회 전용 API
└── common/ # 공통 모듈 - 보안, 설정, 예외처리
[domain]/
├── api/ # Presentation Layer
│ ├── *Controller.java # REST API 엔드포인트
│ └── dto/ # Request/Response DTO
├── application/ # Application Layer
│ ├── *Service.java # 유스케이스 구현
│ └── dto/ # Command 객체
├── domain/ # Domain Layer
│ ├── *.java # Entity, Value Object
│ └── *Repository.java # Repository 인터페이스
└── infrastructure/ # Infrastructure Layer
└── *RepositoryImpl.java # Repository 구현체
| Layer | 역할 | 의존 방향 |
|---|---|---|
| API | HTTP 요청/응답 처리, 인증 | → Application |
| Application | 비즈니스 유스케이스 조율 | → Domain |
| Domain | 핵심 비즈니스 로직, 엔티티 | 없음 (최하위) |
| Infrastructure | 기술 구현 (JPA, 외부 API) | → Domain |
erDiagram
USER {
Long id PK
String name
String email
String picture
String oauthProvider
String oauthId
LocalDateTime createdAt
}
PROBLEM {
Long id PK
Integer problemNumber
String problemTitle
Platform platform
LocalDateTime createdAt
LocalDateTime updatedAt
}
JUDGMENT {
Long id PK
Long problemId FK
Long userId FK
Long submissionId UK
JudgmentStatus status
Platform platform
MetaData metaData
String sourceCode
LocalDateTime createdAt
LocalDateTime updatedAt
}
REVIEW {
Long id PK
Long problemId FK
Long userId FK
String content
Integer difficultyLevel
Integer importanceLevel
String revisedCode
LocalDateTime reviewedAt
ReviewStatus status
boolean favorited
LocalDateTime recentSubmitAt
String recentResult
LocalDateTime createdAt
LocalDateTime updatedAt
}
USER ||--o{ JUDGMENT : "한 사용자는 여러<br/>채점 기록 소유 (1:N)"
USER ||--o{ REVIEW : "한 사용자는 여러<br/>오답 노트 소유 (1:N)"
PROBLEM ||--o{ JUDGMENT : "한 문제는 여러<br/>채점 기록 소유 (1:N)"
PROBLEM ||--o{ REVIEW : "한 문제는 여러<br/>오답 노트를 가짐 (1:N)"
| Repository | Description |
|---|---|
| MyCodingTest_FE | React 프론트엔드 |
| MyCodingTest_Connector | Chrome Extension |
- Java 21
- MySQL 8.0+
- Gradle 8.x
./gradlew bootRun./gradlew test


