Skip to content

✏️ 코딩 문제 풀이와 복습에만 집중할 수 있도록 도와드립니다(26.01 중 재배포 예정)

Notifications You must be signed in to change notification settings

zzoe2346/MyCodingTest_BACKEND

Repository files navigation


MyCodingTest
MY CODING TEST

백준 문제 풀이 기록을 자동 수집하고 복습을 도와주는 서비스

Java Spring MySQL AWS

ArchitecturePackage StructureRelated RepositoriesGetting Started


Architecture

System Overview

Business Flow

Deployment

Deploy Architecture


Package Structure

프로젝트는 DDD(Domain-Driven Design) 기반으로 설계되었습니다.

com.mycodingtest/
├── judgment/        # 채점 도메인 - 플랫폼별 채점 결과 관리
├── problem/         # 문제 도메인 - 알고리즘 문제 정보 관리
├── review/          # 리뷰 도메인 - 오답노트 및 복습 기능
├── user/            # 사용자 도메인 - OAuth 인증 및 프로필
├── collector/       # 수집 도메인 - 외부 플랫폼 데이터 통합
├── query/           # CQRS Query Side - 조회 전용 API
└── common/          # 공통 모듈 - 보안, 설정, 예외처리

Domain Module Structure

[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 Responsibilities

Layer 역할 의존 방향
API HTTP 요청/응답 처리, 인증 → Application
Application 비즈니스 유스케이스 조율 → Domain
Domain 핵심 비즈니스 로직, 엔티티 없음 (최하위)
Infrastructure 기술 구현 (JPA, 외부 API) → Domain

ERD

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)"
Loading

Related Repositories

Repository Description
MyCodingTest_FE React 프론트엔드
MyCodingTest_Connector Chrome Extension

Getting Started

Prerequisites

  • Java 21
  • MySQL 8.0+
  • Gradle 8.x

Run Locally

./gradlew bootRun

Run Tests

./gradlew test

CI/CD

CI/CD Pipeline

About

✏️ 코딩 문제 풀이와 복습에만 집중할 수 있도록 도와드립니다(26.01 중 재배포 예정)

Resources

Stars

Watchers

Forks

Languages