Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
83f8ca6
docs : readme.md 작성
Kimminu7 Jul 1, 2025
5aa55b4
docs : readme.md 작성 (2)
Kimminu7 Jul 1, 2025
561d51e
docs : readme.md 작성 (2)
Kimminu7 Jul 1, 2025
51b42db
docs : readme.md 작성 (3)
Kimminu7 Jul 1, 2025
608d533
docs : readme.md 작성 (4)
Kimminu7 Jul 1, 2025
3df5ef9
docs : readme.md 작성 (5)
Kimminu7 Jul 1, 2025
319f26b
docs : readme.md 작성 (6)
Kimminu7 Jul 1, 2025
361ada9
docs : readme.md 작성 (7)
Kimminu7 Jul 1, 2025
6ffbac8
docs : readme.md (8)
Kimminu7 Jul 2, 2025
7e8fc2e
docs : readme.md 작성 (9)
Kimminu7 Jul 3, 2025
df7a119
docs : readme.md 작성 (10)
Kimminu7 Jul 3, 2025
abbc87f
docs : readme.md 작성 (11)
Kimminu7 Jul 3, 2025
b91e325
docs : readme.md 작성 (12)
Kimminu7 Jul 3, 2025
6f5bd44
docs : readme.md 작성 (13)
Kimminu7 Jul 3, 2025
5ad0abb
docs : readme.md 작성 (14)
Kimminu7 Jul 4, 2025
e31cb38
docs : readme.md 작성 (15)
Kimminu7 Jul 5, 2025
da89cde
docs : readme.md 작성 (16)
Kimminu7 Jul 5, 2025
c58ba10
docs : readme.md 작성
Kimminu7 Jul 1, 2025
4eeb1cc
docs : readme.md 작성 (2)
Kimminu7 Jul 1, 2025
03c7fce
docs : readme.md 작성 (2)
Kimminu7 Jul 1, 2025
2661572
docs : readme.md 작성 (3)
Kimminu7 Jul 1, 2025
41071e6
docs : readme.md 작성 (4)
Kimminu7 Jul 1, 2025
03b3a73
docs : readme.md 작성 (5)
Kimminu7 Jul 1, 2025
af53213
docs : readme.md 작성 (6)
Kimminu7 Jul 1, 2025
bae11c9
docs : readme.md 작성 (7)
Kimminu7 Jul 1, 2025
1a75c68
docs : readme.md (8)
Kimminu7 Jul 2, 2025
c90d00a
docs : readme.md 작성 (9)
Kimminu7 Jul 3, 2025
3a0030c
docs : readme.md 작성 (10)
Kimminu7 Jul 3, 2025
7827c7e
docs : readme.md 작성 (11)
Kimminu7 Jul 3, 2025
81600d8
docs : readme.md 작성 (12)
Kimminu7 Jul 3, 2025
036bad8
docs : readme.md 작성 (13)
Kimminu7 Jul 3, 2025
aba235a
docs : readme.md 작성 (14)
Kimminu7 Jul 4, 2025
b3097a1
docs : readme.md 작성 (15)
Kimminu7 Jul 5, 2025
71d11de
docs : readme.md 작성 (16)
Kimminu7 Jul 5, 2025
4917da1
Merge remote-tracking branch 'origin/docs/readme' into docs/readme
Kimminu7 Jul 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added reademeimage/ci_cd.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added reademeimage/erd.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added reademeimage/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added reademeimage/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added reademeimage/systemArchitecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
153 changes: 152 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
@@ -1 +1,152 @@
내일배움캠프 최종프로젝트 코딩테스트 사이트(2025.05.27~2025.07.08)
# 📢 EzCode : 코딩 테스트 · AI 코드 리뷰 · 게임화 학습 플랫폼

![logo.png](reademeimage/logo.png)

> **Ezcode**는 채점 그 이상의 가치를 제공하는 개발자 중심 코딩테스트 플랫폼입니다.
> 단순히 문제를 푸는 것을 넘어서, 지속적인 성장과 동기부여를 설계했습니다.

---
## 개발 기간: 2025.05.27 ~ 2025.07.07
## 👥 팀원 역할

| 이름 | 역할 | 담당 기능 |
|-----|-----|------------------------|
| 오동원 | 팀장 | 인프라, 신고, 랭킹 |
| 김태익 | 부팀장 | 채점, 코드리뷰, Github 자동 푸시 |
| 김민우 | 팀원 | 문제, 테스트케이스 |
| 임민지 | 팀원 | 유저, 메일, 디자인 |
| 유승우 | 팀원 | 커뮤니티, 알림 |
| 박경오 | 팀원 | 게임, 채팅, 문제 검색 엔진 |

---
## 🚀 주요 특징

### ✅ 매일 한 문제씩, 꾸준히 실력 향상
- 실시간 채점 및 AI 코드 리뷰 제공
- GitHub 자동 연동으로 코드 관리 용이
- 캐릭터 성장과 랭킹 시스템을 통한 학습 동기 부여

---

## 🛠️ 주요 기능

### 👥 유저 서비스
- **회원가입/로그인**
- 이메일 및 비밀번호, 소셜 로그인(Google, GitHub)
- **마이페이지**
- 개인정보, 랭킹, 문제 현황, 프로필 이미지 관리
- **메일 인증**
- 회원가입 시 인증 및 비밀번호 재설정 링크 제공
- **회원 탈퇴**
- Soft Delete 방식으로 탈퇴 처리

---

### 📓 문제 서비스
- 관리자 전용 문제 등록/수정/삭제
- 테스트 케이스 (문제에 맞게 입력, 기댓값 정보 포함)
- 카테고리 및 난이도별 필터링, 이미지 포함 문제 제공
- 문제별 점수 및 검색 기능

---

### 🖍️ 채점 및 리뷰
- 병렬 채점 시스템으로 빠른 피드백
- 제출별 테스트 케이스별 결과 확인
- AI 기반 코드 리뷰 제공 (시간 복잡도 분석 등)
- **매주 토큰 지급**: 매일 한 문제를 풀면 보상 증가
- GitHub 레포지토리 자동 푸시 기능

---

### 🎮 게임화 시스템
- 문제 풀이 시 캐릭터 성장 (레벨/포인트)
- 캐릭터 능력치, 아이템, 스킬 확인 가능
- **PVP, 어드벤처 모드**, 아이템/스킬 뽑기 시스템

---

### 💬 커뮤니티 기능
- 실시간 채팅 및 질문/토론 공유
- 문제 관련 토론 게시판 (정렬 기능 포함)
- 댓글/대댓글 소통 기능

---

### 📮 알림 시스템
- 토론글 추천, 댓글, 대댓글 등 알림 전송

---

## 📜 문서

### API (Swagger)

### <a href="http://3.38.223.188/swagger-ui/index.html"> <<API 명세서>> </a>

### ERD

![erd.png](reademeimage/erd.png)

## 📂 아키텍처

### ⚙️ 4-Layer Architecture + Port & Adapter Pattern

![img.png](reademeimage/img.png)

- **4 계층 아키텍처를 기반으로 헥사고날 아키텍처의 핵심 개념을 도입한 구조**

> 자세한 논의 내용은 아래 링크를 참고하세요:
- [ver1 아키텍처](https://www.notion.so/2012dc3ef51480e88b11fd1d69e9fc40?pvs=21)
- [ver2 아키텍처](https://www.notion.so/ver2-2012dc3ef514801f8e80dab143a11088?pvs=21)
- [ver3 아키텍처](https://www.notion.so/ver3-2022dc3ef51480ecb369f608ae0c3dc6?pvs=21)

### 📦 패키지 구조

```
my.ezcode.codetest
├── common // 🌎 공통 관심사 (AOP, 예외 처리, 설정)
│ ├── config
│ └── exception
├── presentation // 💻 표현 계층 (컨트롤러)
├── application // 🚀 응용 계층 (UseCases)
│ └── service
│ └── dto
│ └── port // 도메인 거치지 않는 써드 파티 기술 (judge0 등)
├── domain // 🧠 도메인 계층 (Core Business Logic)
│ ├── model // 도메인 모델 (Entity, VO)
│ ├── service // 도메인 서비스
│ └── port // 도메인 DB 관련
│ └── exception // 도메인 예외
└── infrastructure // 🔌 인프라 계층 (Outbound Adapter)
└── persistence // 영속성 (JPA repository, querydsl 등)

```

### 🧩 System Architecture

![systemArchitecture.png](reademeimage/systemArchitecture.png)

---

## 💭 CI/CD

![ci_cd.png](reademeimage/ci_cd.png)

## 💡 기술 스택

| 구분 | 사용 기술 |
|--------------------|----------------------------------------------|
| **🖥️ 언어** | Java 17 |
| **🔧 백엔드** | Spring Boot, Spring Data JPA, QueryDSL |
| **🔐 보안** | Spring Security, JWT |
| **💾 데이터베이스** | MySQL, Redis, MongoDB, Elastic search |
| **📨 메시지 큐** | ActiveMQ, Redis Stream |
| **🧠 개발 도구 (IDE)** | IntelliJ IDEA |
| **🌐 외부 API** | Gmail SMTP, OpenAI, Judge0 |
| **📚 API 문서화** | Swagger |
| **🧪 테스트 도구** | Postman, JUnit5, nGrinder |
| **☁️ 클라우드 서비스** | AWS EC2, RDS, S3, LightSail, ELB, Cloudflare |
| **🚀 배포 도구** | Jenkins, Git Actions, Docker, Nginx |
| **📊 모니터링** | Spring Actuator, Prometheus, Grafana |
| **🤝 협업 도구** | GitHub, Notion, Slack, Discord |