- νλ‘μ νΈλͺ : Podofarm
- μ€λͺ : μκ³ λ¦¬μ¦ νμ΄ κ³΅μ , μ€ν°λ κΈ°λ₯, ν΅κ³ μκ°ν λ±μ μ 곡νλ λ°±μλ μμ€ν
- μ£Όμ κΈ°μ μ€ν:
- Java 17
- Spring Boot
- Spring Security + OAuth2
- JPA / Hibernate
- AWS (S3, EC2 λ±)
- Docker
- Caffeine Cache
CodeEntity: μκ³ λ¦¬μ¦ μ½λ λ³Έλ¬Έ μ μ₯CommentEntity: μ½λμ λ¬λ¦° λκΈ μ μ₯- μμ² DTO: CacheRequestDTO, CodeLevelDTO, CodeSolvedListDTO, CommentContentDTO, ExtensionSyncDTO, UploadDTO
- μλ΅ DTO: CommentListResponse, CommentResponse, OpenAIResponse, CodeInfoDTO
- μλΉμ€:
CodeService - λ ν¬μ§ν 리:
CodeRepository,CommentRepository
MemberEntity: μ¬μ©μ μ 보TokenEntity: Access, Refresh ν ν° μ μ₯- μμ² DTO: MemberReNameDto, TokenDto
- μλ΅ DTO: SolvedMemberListResponse
- OAuth κ΄λ ¨:
CustomUser: OAuth μΈμ¦ μ¬μ©μ μ 보CustomOAuthUserService: OAuth2 λ‘κ·ΈμΈ μ²λ¦¬ μλΉμ€
- μλΉμ€:
MemberService - λ ν¬μ§ν 리:
MemberRepository,TokenRepository
ProblemEntity: λ¬Έμ μ 보 λ° νΌ μ¬μ©μ κ΄λ¦¬- μμ² DTO: UserProfileDto, ProblemSolverDto
- μλ΅ DTO: ProblemListResponse, ProblemStaticDto
- μλΉμ€:
ProblemService - λ ν¬μ§ν 리:
ProblemRepository
StudyEntity: μ€ν°λ μμ± λ° μ 보 μ μ₯- μμ² DTO: DailySolvedSearchCond, StudyCreateReqDto, StudyJoinReqDto, StudyLeaderUpdateReqDto, StudyNameUpdateReqDto
- μλ΅ DTO: DailySolvedResDto, DashBoardFrameResDto, DashBoardGrassResDto, DashBoardSolvedCountResDto, LogResDto, MessageResDto, StudyDetailResDto, StudySummaryResDto
- μλΉμ€:
StudyService - λ ν¬μ§ν 리:
StudyRepository,CustomStudyRepository,CustomStudyRepositoryImpl - μμΈ μ²λ¦¬:
StudyExceptionHandler
CookieUtil: μΏ ν€ μμ±, μμ λ± κΈ°λ₯ μ 곡CodeGenerator: λμ μ½λ μμ± μ νΈλ¦¬ν°
AsyncConfig: @Async λΉλκΈ° μ€μ CaffeineCacheConfig: Caffeine κΈ°λ° μΊμ μ€μ CorsConfig: CORS μ μ± μ μ©OpenAIConfig: OpenAI API μ°λμ© μ€μ S3Config: AWS S3 νμΌ μ λ‘λ μ€μ SecurityConfig: OAuth2 λ° JWT 보μ μ€μ
CacheAspect: AOP κΈ°λ° μΊμ± μ²λ¦¬CacheProblemList: λ¬Έμ 리μ€νΈ μΊμ μ μ₯
GlobalException: μ μ μμΈ μ²λ¦¬ ν΄λμ€ErrorResDto: μμΈ λ°μ μ μλ΅ κ°μ²΄ExceptionMessage: μμΈ λ©μμ§ λͺ¨μ μμ- 컀μ€ν
μμΈλ€:
- AlreadyInStudyException, LeaderCannotLeaveException, MemberEqException, NotInThatStudyException
- ServerUnstableException, StudyPasswordMismatchException, TokenException
JwtInterface: ν ν° μ 보 μ μ μΈν°νμ΄μ€JwtTokenProvider: JWT ν ν° λ°κΈ λ° κ²μ¦
podofarm/
βββ src/main/java/com/podofarm/dev/
βββ MildoBackendApplication.java # Spring Boot λ©μΈ ν΄λμ€
β
βββ api/ # λλ©μΈ API λͺ¨λ 루νΈ
β βββ code/ # μ½λ κ΄λ¦¬ λλ©μΈ
β β βββ controller/
β β β βββ CodeController.java # μ½λ API 컨νΈλ‘€λ¬
β β βββ domain/
β β β βββ dto/
β β β β βββ request/
β β β β β βββ CacheRequestDTO.java # μΊμ μμ² DTO
β β β β β βββ CodeLevelDTO.java # λμ΄λ DTO
β β β β β βββ CodeSolvedListDTO.java # νΌ λͺ©λ‘ μμ² DTO
β β β β β βββ CommentContentDTO.java # λκΈ μμ± DTO
β β β β β βββ ExtensionSyncDTO.java # νμ₯ λκΈ°ν DTO
β β β β β βββ UploadDTO.java # μ½λ μ
λ‘λ DTO
β β β β βββ response/
β β β β βββ CommentListResponse.java # λκΈ λ¦¬μ€νΈ μλ΅
β β β β βββ CommentResponse.java # λκΈ μλ΅
β β β β βββ OpenAIResponse.java # AI μλ΅ DTO
β β β β βββ CodeInfoDTO.java # μ½λ μμΈ μλ΅
β β β βββ entity/
β β β βββ CodeEntity.java # μ½λ λ³Έλ¬Έ μν°ν°
β β β βββ CommentEntity.java # λκΈ μν°ν°
β β βββ repository/
β β β βββ CodeRepository.java # μ½λ JPA μΈν°νμ΄μ€
β β β βββ CommentRepository.java # λκΈ JPA μΈν°νμ΄μ€
β β βββ service/
β β βββ CodeService.java # μ½λ μλΉμ€ ν΄λμ€
β
β βββ member/ # νμ κ΄λ¦¬ λλ©μΈ
β β βββ controller/
β β β βββ MemberController.java
β β βββ domain/
β β β βββ entity/
β β β β βββ MemberEntity.java # μ¬μ©μ μ 보 μν°ν°
β β β β βββ TokenEntity.java # ν ν° μν°ν°
β β β βββ dto/
β β β βββ request/
β β β β βββ MemberReNameDto.java # λλ€μ λ³κ²½ DTO
β β β β βββ TokenDto.java # ν ν° μμ² DTO
β β β βββ response/
β β β βββ SolvedMemberListResponse.java # νΌ μ¬μ©μ 리μ€νΈ
β β βββ repository/
β β β βββ MemberRepository.java
β β β βββ TokenRepository.java
β β βββ service/
β β β βββ MemberService.java
β β βββ customoauth/
β β βββ dto/
β β β βββ CustomUser.java # OAuth μ μ μ 보
β β βββ handler/
β β βββ CustomOAuthUserService.java # OAuth2 μλΉμ€
β
β βββ problem/ # λ¬Έμ κ΄λ¦¬ λλ©μΈ
β β βββ controller/
β β β βββ ProblemController.java
β β βββ domain/
β β β βββ entity/
β β β β βββ ProblemEntity.java # λ¬Έμ μν°ν°
β β β βββ dto/
β β β βββ request/
β β β β βββ UserProfileDto.java # μ¬μ©μ λ¬Έμ μ 보 μμ²
β β β β βββ ProblemSolverDto.java # λ¬Έμ ν΄κ²° μ 보
β β β βββ response/
β β β βββ ProblemListResponse.java # λ¬Έμ 리μ€νΈ μλ΅
β β β βββ ProblemStaticDto.java # ν΅κ³μ© DTO
β β βββ repository/
β β β βββ ProblemRepository.java
β β βββ service/
β β βββ ProblemService.java
β
β βββ study/ # μ€ν°λ λλ©μΈ
β β βββ controller/
β β β βββ StudyController.java
β β βββ domain/
β β β βββ entity/
β β β β βββ StudyEntity.java
β β β βββ dto/
β β β βββ request/
β β β β βββ DailySolvedSearchCond.java
β β β β βββ StudyCreateReqDto.java
β β β β βββ StudyJoinReqDto.java
β β β β βββ StudyLeaderUpdateReqDto.java
β β β β βββ StudyNameUpdateReqDto.java
β β β βββ response/
β β β βββ DailySolvedResDto.java
β β β βββ DashBoardFrameResDto.java
β β β βββ DashBoardGrassResDto.java
β β β βββ DashBoardSolvedCountResDto.java
β β β βββ LogResDto.java
β β β βββ MessageResDto.java
β β β βββ StudyDetailResDto.java
β β β βββ StudySummaryResDto.java
β β βββ repository/
β β β βββ StudyRepository.java
β β β βββ CustomStudyRepository.java
β β β βββ CustomStudyRepositoryImpl.java
β β βββ service/
β β β βββ StudyService.java
β β βββ exhandler/
β β βββ StudyExceptionHandler.java
β
β βββ utils/
β βββ cookie/
β β βββ CookieUtil.java # μΏ ν€ μμ±/μμ μ νΈ
β βββ random/
β βββ CodeGenerator.java # λλ€ μ½λ μμ±κΈ°
β
βββ global/ # κΈλ‘λ² μ€μ λͺ¨λ
βββ config/
β βββ async/
β β βββ AsyncConfig.java # λΉλκΈ° μ²λ¦¬ μ€μ
β βββ caffeine/
β β βββ CaffeineCacheConfig.java # μΊμ μ€μ
β βββ cors/
β β βββ CorsConfig.java # CORS μ μ±
μ€μ
β βββ openai/
β β βββ OpenAIConfig.java # OpenAI μ°λ μ€μ
β βββ s3/
β β βββ S3Config.java # AWS S3 μ°λ μ€μ
β βββ security/
β βββ SecurityConfig.java # Spring Security μ€μ
β
βββ cache/
β βββ CacheAspect.java # AOP μΊμ μ²λ¦¬
β βββ CacheProblemList.java # λ¬Έμ 리μ€νΈ μΊμ
β
βββ exception/
β βββ GlobalException.java # μ μ μμΈ μ²λ¦¬κΈ°
β βββ dto/
β β βββ ErrorResDto.java # μμΈ μλ΅ DTO
β βββ message/
β β βββ ExceptionMessage.java # λ©μμ§ μμ
β βββ exceptionClass/
β βββ AlreadyInStudyException.java
β βββ LeaderCannotLeaveException.java
β βββ MemberEqException.java
β βββ NotInThatStudyException.java
β βββ ServerUnstableException.java
β βββ StudyPasswordMismatchException.java
β βββ TokenException.java
β
βββ oauth/
βββ jwt/
βββ JwtInterface.java # JWT μΈν°νμ΄μ€ μ μ
βββ JwtTokenProvider.java # JWT λ°κΈ/κ²μ¦ μ 곡