외국인 대상 한국어 학습 및 모임 서비스 훈민정음 2.0은 세종대왕의 애민정신과 훈민정음 창제의 의미를 이어받아, 한국어를 널리 전파하고자 하는 마음으로 개발된 한국어 교육 서비스입니다. 이 프로젝트는 한국어 학습자들에게 효율적이고 즐거운 학습 경험을 제공하기 위해 다양한 기능을 제공합니다.
- 한국어 단어 학습: 다양한 주제와 난이도의 단어를 학습하며 어휘력을 향상시킬 수 있습니다.
- 위치 기반 모임 찾기: 주변에서 진행되는 한국어 학습 모임을 쉽게 찾아 참여할 수 있습니다.
- 자유로운 1:1 채팅 기능: 다른 학습자나 튜터와 자유롭게 대화하며 실시간으로 한국어 실력을 향상시킬 수 있습니다.
📦 패키지 구조
├─ src
│ ├─ main
│ │ ├─ java
│ │ │ └─ com
│ │ │ └─ hunmin
│ │ │ └─ domain
│ │ │ ├─ config
│ │ │ ├─ controller
│ │ │ │ └─ advice
│ │ │ ├─ dto
│ │ │ │ ├─ board
│ │ │ │ ├─ chat
│ │ │ │ ├─ comment
│ │ │ │ ├─ member
│ │ │ │ ├─ notice
│ │ │ │ ├─ notification
│ │ │ │ ├─ page
│ │ │ │ └─ word
│ │ │ ├─ entity
│ │ │ ├─ exception
│ │ │ ├─ handler
│ │ │ ├─ json
│ │ │ ├─ jwt
│ │ │ ├─ pubsub
│ │ │ ├─ repository
│ │ │ │ └─ search
│ │ │ └─ service
│ │ └─ resources
│ │ ├─ static
│ │ │ ├─ images
│ │ └─ templates
│ │ └─ message
│ └─ test
│ └─ java
│ └─ com
│ └─ hunmin
│ └─ domain
│ ├─ repository
│ └─ service
└─ uploads
채팅
-
웹소켓 기술에 STOMP 기술을 곁들여 보다 편리한 메세지 전송을 구현
-
PUB/SUB 을 붙인 엔드포인트로 간단히 수신자/송신자를 구별
-
서버 확장성을 위한 redis를 이용, 서버간 데이터 전송을 구현 + 인메모리 영역 저장소 활용으로 빠른 성능을 기대
-
특징:
- 양방향 통신으로 편리한 서비스 구현
- 편리한 실시간 메세지 송수신 구현
- Redis를 이용한 빠른 성능 구현
- 서버간 데이터 전송으로 서버 확장성 구현
데이터 흐름: 클라이언트 -> 웹소캣 -> 컨트롤러 -> 서비스 -> stomp handler -> security filter -> stomp.send -> redis -> server -> 클라이언트
기술 흐름: Publisher -> 웹소캣 -> Stomp -> Redis -> data save -> Stomp -> 웹소캣 -> Subscriber
공지사항
- 공지사항 작업(생성, 수정, 삭제)을 수행하기 위한 요청이 들어옵니다.
- 컨트롤러는 이 요청을 수신하고 SecurityContext에서 인증된 사용자 세부 정보를 추출합니다.
- 컨트롤러는 해당 사용자 정보를 서비스 메서드에 전달합니다.
- 서비스 메서드는 데이터베이스에서 해당 사용자의 정보를 조회합니다.
- 서비스 메서드는 사용자가 관리자인지 확인하고 관리자가 아닐경우 예외를 발생시켜 작업을 중단하고 관리자일 경우 요청된 작업을 진행합니다.
강예진 | 오익수 | 김동현 | 한재재 | 김동우 |
게시판, 댓글, 알림 | 회원 | 채팅 | 단어학습 | 공지사항 |
Convention
💡 이슈 생성 → 브랜치 생성 → 해당 브랜치로 이동 → develop pull → 작업 중간중간 커밋 → 해당 이슈에 대한 작업이 다 완료되면 pr 생성
🚨 커밋 메시지도 템플릿을 지켜주세요 (커밋 메시지 push 전까지는 수정할 수 있어요)
🚨 헷갈리면 push를 멈춰 주세요
🚨 merge 시 충돌을 주의해 주세요 ❗️
🚨 main은 배포중인 브랜치이므로 pr은 develop 으로 부탁드려요
🚨 궁금한 점이 있다면 언제든 같이 해결해요 😊
- feat : 새로운 기능 구현
- mod : 코드 및 내부 파일 수정
- add : feat 이외의 부수적인 코드, 파일, 라이브러리 추가
- del : 불필요한 코드나 파일 삭제
- fix : 버그 및 오류 해결
- ui : UI 관련 작업
- chore : 버전 코드, 패키지 구조, 함수 및 변수명 변경 등의 작은 작업
- hotfix : 배포된 버전에 이슈 발생 시, 긴급하게 수정 작업
- rename : 파일이나 폴더명 수정
- docs : README나 Wiki 등의 문서 작업
- refactor : 코드 리팩토링
- merge : 서로 다른 브랜치 간의 병합
- comment : 필요한 주석 추가 및 변경
-
제목
[type] 작업 내용 간단히
💡issue 안에서 바로 branch를 만들어주세요 ❗️
feature/#(이슈번호 앞에 붙여주세요!
ex) feature/#1-add-ipa-엔티티-설계
[type] 작업 내용 간단히
ex)
[feat] ~~~한 기능 구현
-
제목
[type] 작업 내용 간단히
- 소문자
com>도메인 명>www>
- config
- controller>advice
- dto
- entity
- exception
- repository>search
- security
- service
- jwt
= <Test 패키지는 main과 대칭>
- ctrl+shift+t
- 자바 컨벤션 준수
-
if 중괄호 필수
if (condition) { // 한 줄이라도 }
-
클래스, 메서드 주석
//간단한 설명
-
로그 : 필요 시 규칙없이 작성