Skip to content

외국인 대상 한국어 학습 및 모임 서비스 - 코틀린 마이그레이션

Notifications You must be signed in to change notification settings

prgrms-be-devcourse/NBE2_3_Team7

Repository files navigation

훈민정음 2.0 Kotlin 마이그레이션 프로젝트

훈민정음 2.0

외국인 대상 한국어 학습 및 모임 서비스 훈민정음 2.0은 세종대왕의 애민정신과 훈민정음 창제의 의미를 이어받아, 한국어를 널리 전파하고자 하는 마음으로 개발된 한국어 교육 서비스입니다. 이 프로젝트는 한국어 학습자들에게 효율적이고 즐거운 학습 경험을 제공하기 위해 다양한 기능을 제공합니다.

1차 개발 기간 (Java)

2024/09/23 ~ 2024/10/10

2차 개발 및 마이그레이션 기간 (Kotlin)

2024/10/18 ~ 2024/11/06

기능 목록

  • 한국어 단어 학습: 다양한 주제와 난이도의 단어를 학습하며 어휘력을 향상시킬 수 있습니다.
  • 위치 기반 모임 찾기: 주변에서 진행되는 한국어 학습 모임을 쉽게 찾아 참여할 수 있습니다.
  • 자유로운 1:1 채팅 기능: 다른 학습자나 튜터와 자유롭게 대화하며 실시간으로 한국어 실력을 향상시킬 수 있습니다.

기술 스택

Backend

Kotlin Spring

DB / Infra

성능테스트

문서/협업툴

구조

📦 패키지 구조

├─ 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

전체 시스템 구조 - 사용자 image

전체 시스템 구조 - 관리자 image

채팅

image

-Clipchamp5-ezgif com-video-to-gif-converter

로그인

스크린샷 2024-11-06 172728 2 0--Canva-Chrome2024-11-0617-34-58-ezgif com-video-to-gif-converter

게시판, 카카오맵 api, 북마크

스크린샷 2024-11-07 오전 9 18 44

  • 게시판, 카카오맵 api

ezgif com-video-to-gif-converter

  • 북마크

ezgif com-video-to-gif-converter

댓글, 좋아요

스크린샷 2024-11-07 오전 9 18 57 ezgif com-video-to-gif-converter (1)

단어

1. 단어사전

단어사전 시스템 단어사전

단어 조회 및 단어 검색

  • 5개의 언어가 지원됩니다. (영어, 일본어, 중국어, 베트남어, 프랑스어)
  • 사용자는 선택한 언어의 단어 목록을 조회하고 단어의 상세 정보를 조회할 수 있습니다.
  • 검색 기능이 있으며 검색하고자하는 단어를 입력하고 언어를 선택해 조회합니다.

단어 등록, 수정, 삭제

  • 단어 등록, 수정, 삭제는 관리자 권한입니다.
  • 관리자 권한이 없다면 403 FORBIDDEN 에러 메세지를 반환합니다.

2. 단어학습

단어사전 시스템 단어학습
  • 5개의 언어가 지원됩니다. (영어, 일본어, 중국어, 베트남어, 프랑스어)
  • 사용자가 언어와 레벨을 선택하고, 선택한 언어로 단어 30개가 주어집니다. 또한 선택한 레벨에 따라 학습 시간이 다르게 주어집니다.
  • 학습 시간이 다 지나면 사용자는 주어진 단어의 뜻과 의미를 확인할 수 있습니다.

3. 단어시험

단어사전 시스템 단어시험
  • 5개의 언어가 지원됩니다. (영어, 일본어, 중국어, 베트남어, 프랑스어)

  • 사용자가 언어와 레벨을 선택합니다. 선택한 언어로 단어가 제공되며, 선택한 레벨에 따라 문제 수가 다르게 주어집니다.

    Level 1 = 25문제

    Level 2 = 50문제

    Level 3 = 100문제

  • 시험을 제출하거나 시간이 다 지나면 사용자는 시험 점수와, 랭킹 점수, 정답 개수, 오답 개수를 확인할 수 있습니다.

  • 랭킹 점수는 선택한 레벨에 따라 패널티가 반영되어 계산된 후의 점수입니다.

    Level 1 : 패널티 20%

    Level 2 : 패널티 10%

    Level 3 : 패널티 없음

4. 단어시험 랭킹 조회 및 개인 기록 조회

단어사전 시스템 단어시험 랭킹 및 개인 기록 조회
  • 랭킹 점수를 바탕으로 언어별 순위가 주어집니다. 또한 전체 및 언어별 TOP100 랭킹 순위를 확인할 수 있습니다.
  • 사용자 개인 시험 기록을 확인할 수 있습니다.
공지사항

image

공지사항

  1. 공지사항 작업(생성, 수정, 삭제)을 수행하기 위한 요청이 들어옵니다.
  2. 컨트롤러는 이 요청을 수신하고 SecurityContext에서 인증된 사용자 세부 정보를 추출합니다.
  3. 컨트롤러는 해당 사용자 정보를 서비스 메서드에 전달합니다.
  4. 서비스 메서드는 데이터베이스에서 해당 사용자의 정보를 조회합니다.
  5. 서비스 메서드는 사용자가 관리자인지 확인하고 관리자가 아닐경우 예외를 발생시켜 작업을 중단하고 관리자일 경우 요청된 작업을 진행합니다.
회원 관리

image

ezgif com-video-to-gif-converter

권한 검증 단계

사용자가 AdminController의 메서드를 호출하면 @PreAuthorize("hasAuthority('ADMIN')") 애노테이션이 먼저 동작하여 Spring Security가 현재 사용자의 권한을 확인합니다
ADMIN 권한이 있으면 -> AdminService 로직 실행
ADMIN 권한이 없으면 -> 403 Forbidden + 에러 메시지 반환합니다.

알림

스크린샷 2024-11-07 오전 9 20 04 ezgif com-video-to-gif-converter (2)

  • 단방향 통신으로 이루어지는 단순 알림이므로 SSE 선택
배포

스크린샷 2024-11-07 오전 9 20 38

팔로우

image -Clipchamp4-ezgif com-video-to-gif-converter

  • 요청/수락으로 관계형성
  • 알림과 차단 기능으로 알림 차단가능
검색

화면 캡처 2024-11-07 194021 -Clipchamp2-ezgif com-video-to-gif-converter

  • 게시글/제목검색

다이어그램

ERD

image

클래스 다이어그램

image

유스케이스 다이어그램

USECASE

플로우 차트

image

팀원 소개

강예진 오익수 김동현 한재재 김동우
게시판, 댓글,
알림, CI/CD
회원,
S3 이미지
채팅, 팔로잉,
게시글 검색
단어 사전,
단어 학습
공지사항,
회원 관리

프로젝트 협업 규칙

Convention

💡 이슈 생성 → 브랜치 생성 → 해당 브랜치로 이동 → develop pull → 작업 중간중간 커밋 → 해당 이슈에 대한 작업이 다 완료되면 pr 생성

🚨 커밋 메시지도 템플릿을 지켜주세요 (커밋 메시지 push 전까지는 수정할 수 있어요)

🚨 헷갈리면 push를 멈춰 주세요

🚨 merge 시 충돌을 주의해 주세요 ❗️

🚨 main은 배포중인 브랜치이므로 pr은 develop 으로 부탁드려요

🚨 궁금한 점이 있다면 언제든 같이 해결해요 😊

[type]

  • feat : 새로운 기능 구현
  • mod : 코드 및 내부 파일 수정
  • add : feat 이외의 부수적인 코드, 파일, 라이브러리 추가
  • del : 불필요한 코드나 파일 삭제
  • fix : 버그 및 오류 해결
  • ui : UI 관련 작업
  • chore : 버전 코드, 패키지 구조, 함수 및 변수명 변경 등의 작은 작업
  • hotfix : 배포된 버전에 이슈 발생 시, 긴급하게 수정 작업
  • rename : 파일이나 폴더명 수정
  • docs : README나 Wiki 등의 문서 작업
  • refactor : 코드 리팩토링
  • merge : 서로 다른 브랜치 간의 병합
  • comment : 필요한 주석 추가 및 변경

issue

  • 제목

    [type] 작업 내용 간단히

branch

💡issue 안에서 바로 branch를 만들어주세요 ❗️

feature/#(이슈번호 앞에 붙여주세요!

ex) feature/#1-add-ipa-엔티티-설계

commit message

[type] 작업 내용 간단히

ex) 
[feat] ~~~한 기능 구현 

PR

  • 제목

    [type] 작업 내용 간단히

패키지명

  • 소문자

패키지 구조

com>도메인 명>www>

  • config
  • controller>advice
  • dto
  • entity
  • exception
  • repository>search
  • security
  • service
  • jwt

= <Test 패키지는 main과 대칭>

  • ctrl+shift+t
  • 자바 컨벤션 준수

기타

  • if 중괄호 필수

    if (condition) {
        // 한 줄이라도
    }
  • 클래스, 메서드 주석

    //간단한 설명
  • 로그 : 필요 시 규칙없이 작성

About

외국인 대상 한국어 학습 및 모임 서비스 - 코틀린 마이그레이션

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published