외국인 대상 한국어 학습 및 모임 서비스 훈민정음 2.0은 세종대왕의 애민정신과 훈민정음 창제의 의미를 이어받아, 한국어를 널리 전파하고자 하는 마음으로 개발된 한국어 교육 서비스입니다. 이 프로젝트는 한국어 학습자들에게 효율적이고 즐거운 학습 경험을 제공하기 위해 다양한 기능을 제공합니다.
2024/09/23 ~ 2024/10/10
2024/10/18 ~ 2024/11/06
- 한국어 단어 학습: 다양한 주제와 난이도의 단어를 학습하며 어휘력을 향상시킬 수 있습니다.
- 위치 기반 모임 찾기: 주변에서 진행되는 한국어 학습 모임을 쉽게 찾아 참여할 수 있습니다.
- 자유로운 1:1 채팅 기능: 다른 학습자나 튜터와 자유롭게 대화하며 실시간으로 한국어 실력을 향상시킬 수 있습니다.
📦 패키지 구조
├─ src
│ ├─ main
│ │ ├─ kotlin
│ │ │ └─ com
│ │ │ └─ hunmin
│ │ │ ├─ domain
│ │ │ │ ├─ config
│ │ │ │ ├─ controller
│ │ │ │ │ └─ advice
│ │ │ │ ├─ dto
│ │ │ │ │ ├─ board
│ │ │ │ │ ├─ chat
│ │ │ │ │ ├─ comment
│ │ │ │ │ ├─ follow
│ │ │ │ │ ├─ member
│ │ │ │ │ ├─ notice
│ │ │ │ │ ├─ notification
│ │ │ │ │ ├─ page
│ │ │ │ │ └─ word
│ │ │ │ ├─ entity
│ │ │ │ ├─ exception
│ │ │ │ ├─ handler
│ │ │ │ ├─ jwt
│ │ │ │ ├─ redis
│ │ │ │ │ ├─ entity
│ │ │ │ │ ├─ repository
│ │ │ │ │ ├─ sendMessage
│ │ │ │ │ └─ service
│ │ │ │ └─ repositoy
│ │ │ └─ global
│ │ │ ├─ config
│ │ │ ├─ exception
│ │ │ ├─ s3
│ │ │ └─ validate
│ │ └─ resource
│ └─
│ └─ kotlin
│ └─ com
│ └─ hunmin
│ └─ domain
│ ├─ repository
│ └─ service
└─ uploads
단어
- 5개의 언어가 지원됩니다. (영어, 일본어, 중국어, 베트남어, 프랑스어)
- 사용자는 선택한 언어의 단어 목록을 조회하고 단어의 상세 정보를 조회할 수 있습니다.
- 검색 기능이 있으며 검색하고자하는 단어를 입력하고 언어를 선택해 조회합니다.
- 단어 등록, 수정, 삭제는 관리자 권한입니다.
- 관리자 권한이 없다면 403 FORBIDDEN 에러 메세지를 반환합니다.
- 5개의 언어가 지원됩니다. (영어, 일본어, 중국어, 베트남어, 프랑스어)
- 사용자가 언어와 레벨을 선택하고, 선택한 언어로 단어 30개가 주어집니다. 또한 선택한 레벨에 따라 학습 시간이 다르게 주어집니다.
- 학습 시간이 다 지나면 사용자는 주어진 단어의 뜻과 의미를 확인할 수 있습니다.
-
5개의 언어가 지원됩니다. (영어, 일본어, 중국어, 베트남어, 프랑스어)
-
사용자가 언어와 레벨을 선택합니다. 선택한 언어로 단어가 제공되며, 선택한 레벨에 따라 문제 수가 다르게 주어집니다.
Level 1 = 25문제
Level 2 = 50문제
Level 3 = 100문제
-
시험을 제출하거나 시간이 다 지나면 사용자는 시험 점수와, 랭킹 점수, 정답 개수, 오답 개수를 확인할 수 있습니다.
-
랭킹 점수는 선택한 레벨에 따라 패널티가 반영되어 계산된 후의 점수입니다.
Level 1 : 패널티 20%
Level 2 : 패널티 10%
Level 3 : 패널티 없음
- 랭킹 점수를 바탕으로 언어별 순위가 주어집니다. 또한 전체 및 언어별 TOP100 랭킹 순위를 확인할 수 있습니다.
- 사용자 개인 시험 기록을 확인할 수 있습니다.
공지사항
- 공지사항 작업(생성, 수정, 삭제)을 수행하기 위한 요청이 들어옵니다.
- 컨트롤러는 이 요청을 수신하고 SecurityContext에서 인증된 사용자 세부 정보를 추출합니다.
- 컨트롤러는 해당 사용자 정보를 서비스 메서드에 전달합니다.
- 서비스 메서드는 데이터베이스에서 해당 사용자의 정보를 조회합니다.
- 서비스 메서드는 사용자가 관리자인지 확인하고 관리자가 아닐경우 예외를 발생시켜 작업을 중단하고 관리자일 경우 요청된 작업을 진행합니다.
회원 관리
권한 검증 단계
사용자가 AdminController의 메서드를 호출하면 @PreAuthorize("hasAuthority('ADMIN')") 애노테이션이 먼저 동작하여 Spring Security가 현재 사용자의 권한을 확인합니다
ADMIN 권한이 있으면 -> AdminService 로직 실행
ADMIN 권한이 없으면 -> 403 Forbidden + 에러 메시지 반환합니다.
강예진 | 오익수 | 김동현 | 한재재 | 김동우 |
게시판, 댓글, 알림, CI/CD |
회원, S3 이미지 |
채팅, 팔로잉, 게시글 검색 |
단어 사전, 단어 학습 |
공지사항, 회원 관리 |
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) { // 한 줄이라도 }
-
클래스, 메서드 주석
//간단한 설명
-
로그 : 필요 시 규칙없이 작성