Skip to content

Latest commit

 

History

History
169 lines (144 loc) · 6.63 KB

README.md

File metadata and controls

169 lines (144 loc) · 6.63 KB

My3D-BACKEND

  • My3D BACKEND
  • 3D 모델을 공유하여 다운로드받을 수 있는 게시판 서비스
  • Supported 3D Model Extension: *.stl, *.stp

Development Environment

  • Intellij IDEA Ultimate
  • Java 17
  • Gradle 8.5
  • Spring Boot 2.7.18

Project Structure

AWS Structure

Tech Stack

BackEnd
SpringBoot SpringSecurity
SpringDataJpa QueryDSL
JUnit5 Mockito
DevOps
PostgreSQL
AWS EC2 S3 RDS

Features

  • 로그인/회원가입
    • 비밀번호 찾기
    • 이메일 인증
  • 게시글 작성/수정/삭제
  • 게시글에 첨부된 파일 다운로드
  • 댓글 & 대댓글 추가/삭제
  • 좋아요 추가/삭제
  • 좋아요, 작성일자 정렬
  • 제목 검색
  • 댓글 추가시 알람 전송
  • 유저 정보 수정
  • 회원 탈퇴
  • 구독 기능

📝 요구사항

Flow Chart

  1. 회원가입
  2. 로그인
  3. Authentication (인증)
  4. 알람

1. 회원가입

  sequenceDiagram
    autonumber
    actor client
    client ->>+ 회원 유형 선택: 회원가입
    activate client
    alt 기업/기관일 경우
        회원 유형 선택 ->>+ 사업자 인증: 사업자 인증 페이지 요청
        사업자 인증 ->> 사업자 인증: 사업자 인증
        사업자 인증 ->>- 회원 정보 입력: 회원가입 페이지 요청
        activate 회원 정보 입력
    else 개인일 경우
        회원 유형 선택 ->> 회원 정보 입력: 회원가입 페이지 요청
    end
    회원 정보 입력 ->> 회원 정보 입력: 이메일 인증
    회원 정보 입력 ->>+ WAS: 회원가입 요청
    deactivate 회원 정보 입력
    WAS ->> WAS: validation
    WAS ->> DB: 유저 정보 저장
    WAS ->> WAS: JWT 토큰 생성
    WAS -->>- client: JWT 토큰 전달
    client ->> client: 홈페이지 redirect 
    deactivate client
Loading

2. 로그인

sequenceDiagram
    autonumber
    actor client
    client ->> WAS: 로그인 요청
    activate client
    WAS ->>+ DB: 유저 정보 요청
    activate WAS
    DB -->>- WAS: 유저 정보 반환
    WAS ->> WAS: 비밀번호 일치 확인
    WAS ->> WAS: JWT 토큰, Refresh Token 생성
    WAS -->>- client: Token 전달
    client ->> client: 홈페이지로 이동
    deactivate client
Loading

3. Authentication (인증)

sequenceDiagram
    autonumber
    actor client
    client ->> WAS: Authentication 요청
    activate client
    activate WAS
    WAS ->> WAS: JWT 토큰 확인
    alt JWT 토큰이 유효한 경우
        WAS ->> WAS: 토큰 정보로 UserDetail 객체 생성
        WAS ->> WAS: Authentication
        WAS -->> client: 인증 완료
    else JWT 토큰이 만료된 경우
        WAS ->> WAS: Refresh Token parsing & validation
        alt Refresh Token이 유효한 경우
            WAS ->> WAS: JWT 재발행
            WAS ->> WAS: Authentication
            WAS -->> client: 재발행된 JWT 토큰 전달
        else Refresh Token이 유효하지않은 경우
            WAS ->> client: 로그인 페이지 이동
        end
    else JWT 토큰이 유효하지않은 경우
        WAS -->> client: 로그인 페이지 이동
        deactivate WAS
        deactivate client
    end
Loading

4. 알람

4.1. 페이지 전환

sequenceDiagram
    autonumber
    actor client
    client ->> WAS: GET /api/v1/alarm
    activate client
    activate WAS
    WAS ->>+ DB: 알람 정보 요청
    DB -->>- WAS: 알람 정보 반환
    WAS -->>- client: 알람 정보 전달
    deactivate client
Loading

4.2. 이벤트 발생 (댓글 작성)

sequenceDiagram
    autonumber
    actor client
    activate client
    WAS ->>+ DB: 댓글 저장
    activate WAS
    WAS ->> DB: 알람 저장
    deactivate DB
    alt 알람 수신자가 로그인 상태인 경우
      WAS -->>- client: 알람 정보 전달 (SseEmitter, Websocket)
    end
    deactivate client
Loading

ERD

  • 이미지를 클릭하면 ERDCloud 페이지로 이동합니다.

ERD