Skip to content

prgrms-be-devcourse/NBE2_2_Team7

Repository files navigation

훈민정음 2.0

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

기능 목록

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

기술 스택

Backend

Java Spring

DB / Infra

성능테스트

문서/협업툴

구조

📦 패키지 구조

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

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

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

채팅

채팅 시스템 구조 image

1. 채팅 구현 기술

WebSocket + STOMP + Redis Pub/Sub

  • 웹소켓 기술에 STOMP 기술을 곁들여 보다 편리한 메세지 전송을 구현

  • PUB/SUB 을 붙인 엔드포인트로 간단히 수신자/송신자를 구별

  • 서버 확장성을 위한 redis를 이용, 서버간 데이터 전송을 구현 + 인메모리 영역 저장소 활용으로 빠른 성능을 기대

  • 특징:

    • 양방향 통신으로 편리한 서비스 구현
    • 편리한 실시간 메세지 송수신 구현
    • Redis를 이용한 빠른 성능 구현
    • 서버간 데이터 전송으로 서버 확장성 구현

2. 데이터의 흐름

데이터 흐름: 클라이언트 -> 웹소캣 -> 컨트롤러 -> 서비스 -> stomp handler -> security filter -> stomp.send -> redis -> server -> 클라이언트

기술 흐름: Publisher -> 웹소캣 -> Stomp -> Redis -> data save -> Stomp -> 웹소캣 -> Subscriber

로그인

image ezgif com-resize

게시판, 카카오맵 api

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

댓글

image ezgif com-video-to-gif-converter

단어학습

image 단어

공지사항

image

공지사항

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

image

image

3-ezgif com-video-to-gif-converter

다이어그램

ERD

image

클래스 다이어그램

hunmin

유스케이스 다이어그램

USECASE

팀원 소개

강예진 오익수 김동현 한재재 김동우
게시판, 댓글, 알림 회원 채팅 단어학습 공지사항

프로젝트 협업 규칙

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