Skip to content

누구나 3D 모델을 공유하고 다운로드 할 수 있는 게시판 서비스

Notifications You must be signed in to change notification settings

JadeKim042386/My3D

Repository files navigation

My3D

3D 모델 중에는 재사용 가능한 것들이 많습니다. 그래서 누구나 3D 모델을 공유하여 사용할 수 있도록하는 서비스입니다.

Project Structure

Development Environment

  • Intellij IDEA Ultimate 2023.2.4
  • Java 17
  • Gradle 8.2.1
  • Spring Boot 2.7.14

Tech Stack

FrontEnd
js html css
Bootstrap
Thymeleaf
BackEnd
SpringBoot SpringSecurity
SpringDataJpa QueryDSL
JUnit5 Mockito
intellijidea
git
DevOps
AWS EC2 S3 RDS
MySQL MariaDB
Nginx
자동 배포화
GitHub Actions CODEDEPLOY

Preview

메인 페이지

  • 카테고리별 게시글 검색 가능
  • 좋아요, 작성일자 기준 게시글 정렬 가능
  • 게시글 제목 검색 가능

게시글 페이지

  • 게시글 수정/삭제 가능
  • 좋아요 추가/삭제 가능
  • 파일 다운로드 가능
  • 댓글/대댓글 작성 가능
  • 댓글 작성시 알람 전송

게시글 작성 페이지

  • 제목, 본문, 파일, 치수 정보, 카테고리 입력

로그인 & 비밀번호 찾기 페이지

  • 구글, 네이버, 카카오 로그인 가능
  • 비밀번호 찾기 가능

회원가입 페이지

  • 기업 유저는 사업자 인증을 수행
  • 기업/일반 유저는 본인 인증을 목적으로 이메일 인증을 수행

유저 정보 수정 페이지

  • 일반 유저와 기업 유저 구분
  • 기업 유저는 기업 정보를 수정할 수 있는 페이지가 추가됨

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

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

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

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

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

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

ERD

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

ERD

About

누구나 3D 모델을 공유하고 다운로드 할 수 있는 게시판 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published