|
| 1 | +# 36.5 (온라인 편지 교환 플랫폼) |
| 2 | + |
| 3 | +36.5는 사용자들이 익명으로 편지를 주고받을 수 있는 소셜 플랫폼입니다. 온라인에서 따뜻한 인간 관계를 형성하고 소통할 수 있는 공간을 제공합니다. |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +- 프로젝트 기간 : 2025.02.07 ~ 2025.03.14 |
| 9 | +- 배포 URL : https://www.ddasum.kr/ |
| 10 | + |
| 11 | +## 구성원 |
| 12 | +| [이영섭](https://github.com/chesthyeon) | [고진영](https://github.com/Kojinyoung7220) | [양한동](https://github.com/yhd1101) | [이종찬](https://github.com/LeeVell) | [허정현](https://github.com/HeoJeongHyeon) | |
| 13 | +| --- | --- | --- | --- | --- | |
| 14 | +| <a href="https://github.com/leeys9423"><img src="https://avatars.githubusercontent.com/u/67312117?v=4" width="100px;" alt=""/></a> | <a href="https://github.com/Kojinyoung7220"><img src="https://avatars.githubusercontent.com/u/133757475?v=4" width="100px;" alt=""/></a> | <a href="https://github.com/yhd1101"><img src="https://avatars.githubusercontent.com/u/117626705?v=4" width="100px;" alt=""/></a> | <a href="https://github.com/LeeVell"><img src="https://avatars.githubusercontent.com/u/50389081?v=4" width="100px;" alt=""/></a> | <a href="https://github.com/HeoJeongHyeon"><img src="https://avatars.githubusercontent.com/u/188425240?v=4" width="100px;" alt=""/></a> | |
| 15 | +| PO | Team-Lead | Clerk | Clerk | Clerk | |
| 16 | +| 소셜로그인, 인증 및 인가 | 편지, JIRA | AWS, 금칙어, 신고 | 알림, 이벤트 게시판 | 공유 편지 및 게시판 | |
| 17 | + |
| 18 | +## 📋 프로젝트 개요 |
| 19 | + |
| 20 | +WarmLetter는 다음과 같은 기능을 제공합니다: |
| 21 | + |
| 22 | +- **랜덤 편지**: 카테고리별 랜덤 편지 작성 및 매칭 |
| 23 | +- **편지 주고받기**: 매칭된 사용자와 지속적인 편지 교환 |
| 24 | +- **공유 기능**: 의미 있는 대화를 게시판에 공유 |
| 25 | +- **알림 시스템**: 실시간 SSE 기반 알림 제공 |
| 26 | +- **소셜 로그인**: Google, Kakao, Naver를 통한 간편 로그인 |
| 27 | +- **온도 시스템**: 사용자 신뢰도를 나타내는 온도 지표 |
| 28 | + |
| 29 | +## 🛠 기술 스택 |
| 30 | + |
| 31 | +### 백엔드 |
| 32 | +- **언어 및 프레임워크**: Java 17, Spring Boot 3.0 |
| 33 | +- **보안**: Spring Security, JWT |
| 34 | +- **데이터베이스**: MySQL, Redis |
| 35 | +- **ORM**: Spring Data JPA, Querydsl |
| 36 | +- **문서화**: Swagger (OpenAPI 3.0) |
| 37 | +- **빌드 도구**: Gradle |
| 38 | + |
| 39 | +### 인프라 |
| 40 | +- **배포**: Docker, AWS EC2 |
| 41 | +- **CI/CD**: Github Actions |
| 42 | +- **품질 관리**: SonarCloud, JaCoCo |
| 43 | + |
| 44 | +## 📂 프로젝트 구조 |
| 45 | + |
| 46 | +도메인 중심 구조로 설계 |
| 47 | + |
| 48 | +``` |
| 49 | +src/main/java/io/crops/warmletter/ |
| 50 | +├── domain/ |
| 51 | +│ ├── auth/ # 인증 관련 로직 |
| 52 | +│ ├── badword/ # 금칙어 필터링 |
| 53 | +│ ├── eventpost/ # 이벤트 게시판 |
| 54 | +│ ├── letter/ # 편지 핵심 기능 |
| 55 | +│ ├── member/ # 회원 관리 |
| 56 | +│ ├── report/ # 신고 기능 |
| 57 | +│ ├── share/ # 편지 공유 기능 |
| 58 | +│ └── timeline/ # 알림 및 타임라인 |
| 59 | +├── global/ |
| 60 | +│ ├── config/ # 전역 설정 |
| 61 | +│ ├── entity/ # 공통 엔티티 |
| 62 | +│ ├── error/ # 예외 처리 |
| 63 | +│ ├── jwt/ # JWT 인증 |
| 64 | +│ ├── oauth/ # OAuth2 인증 |
| 65 | +│ ├── response/ # 공통 응답 형식 |
| 66 | +│ ├── schedule/ # 스케줄링 작업 |
| 67 | +│ └── util/ # 유틸리티 클래스 |
| 68 | +└── WarmLetterApplication.java |
| 69 | +``` |
| 70 | + |
| 71 | +## 🔒 인증 및 보안 |
| 72 | + |
| 73 | +- **JWT 기반 인증**: 액세스 토큰 및 리프레시 토큰 |
| 74 | +- **OAuth2 소셜 로그인**: Google, Kakao, Naver 지원 |
| 75 | +- **CORS 설정**: 안전한 교차 출처 리소스 공유 |
| 76 | +- **토큰 블랙리스트**: 로그아웃 및 토큰 무효화 관리 |
| 77 | + |
| 78 | +## 📬 편지 시스템 |
| 79 | + |
| 80 | +- **랜덤 매칭**: 사용자는 관심 카테고리를 선택하여 랜덤 편지를 받을 수 있음 |
| 81 | +- **배송 시스템**: 편지는 일정 시간 후 배달되어 실제 편지 느낌을 제공 |
| 82 | +- **서신함**: 주고받은 편지를 저장하고 관리하는 공간 |
| 83 | +- **임시 저장**: 작성 중인 편지를 임시 저장할 수 있는 기능 |
| 84 | + |
| 85 | +## 🔔 알림 시스템 |
| 86 | + |
| 87 | +실시간 알림은 SSE(Server-Sent Events)를 기반 |
| 88 | + |
| 89 | +- 새 편지 도착 |
| 90 | +- 편지 발송 중 |
| 91 | +- 공유 요청 수신 |
| 92 | +- 게시글 공유 완료 |
| 93 | +- 신고 처리 결과 |
| 94 | + |
| 95 | +## 🔍 코드 품질 관리 |
| 96 | + |
| 97 | + |
| 98 | + |
| 99 | +### SonarCloud |
| 100 | +- 코드 품질 및 보안 취약점 지속적 분석 |
| 101 | +- 코드 중복, 복잡도, 잠재적 버그 감지 |
| 102 | +- 코드 커버리지 측정 및 보고 |
| 103 | + |
| 104 | +### JaCoCo (Java Code Coverage) |
| 105 | +- 코드 테스트 커버리지 측정 |
| 106 | +- 브랜치, 라인, 메소드 커버리지 분석 |
| 107 | +- CI/CD 파이프라인과 통합되어 품질 게이트 적용 |
| 108 | + |
| 109 | +## 🌟 주요 기능 하이라이트 |
| 110 | + |
| 111 | +### 1. 온도 시스템 |
| 112 | +사용자의 신뢰도와 활동을 기반으로 한 온도 시스템이 구현되어 있습니다. 편지 평가, 신고 처리 등에 따라 온도가 변동됩니다. |
| 113 | + |
| 114 | +### 2. 금칙어 필터링 |
| 115 | +사용자 생성 콘텐츠는 금칙어 필터링을 통과해야 하며, 관리자가 금칙어를 관리할 수 있습니다. |
| 116 | + |
| 117 | +### 3. 실시간 알림 |
| 118 | +SSE를 활용한 실시간 알림 시스템으로 사용자 경험을 향상시켰습니다. |
| 119 | + |
| 120 | +### 4. 신고 및 모더레이션 |
| 121 | +AI 기반 콘텐츠 검토 및 관리자 검토 시스템을 통해 안전한 커뮤니티를 유지합니다. |
| 122 | + |
| 123 | +## 📝 API 문서 |
| 124 | + |
| 125 | +API 문서는 Swagger를 통해 제공됩니다 |
0 commit comments