Skip to content

cksquf98/some-mate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

팀 이름: 찬지창조의 손

조원: 김찬별, 이지수, 손성욱

1. 프로젝트 개요

  • 프로젝트 이름: SomeMate
  • 목적: MBTI를 기반으로 한 사용자 매칭 웹 애플리케이션
  • 주요 기능: 사용자 성격 유형(MBTI)에 따라 적합한 상대를 매칭하고, 수락시 카카오톡 채팅방 연결

2. SomeMate의 주요 기능

스크린샷 2024-09-29 오후 12 46 53 스크린샷 2024-09-29 오후 1 27 11

1) 회원 관리 및 로그인 기능

  • 설명: 사용자의 개인정보를 안전하게 관리하고, 로그인 및 회원가입 절차를 처리
  • 기능 특징:
    • 회원가입 기능: 사용자 정보를 입력하고 저장하여 회원으로 등록
    • JWT 인증: JSON Web Token을 사용해 로그인 및 보안 인증 처리
    • 비밀번호 암호화: 사용자의 비밀번호를 안전하게 암호화하여 데이터베이스에 저장
    • 중복 확인: 사용자 ID 중복 여부를 확인하여 중복된 ID 사용 방지
    • 아이디 유효성 검사: 영문 또는 숫자 이외에는 입력 방지

2) 사용자 매칭 기능 (MBTI 기반)

  • 설명: 사용자의 MBTI 유형을 기반으로 적합한 상대를 매칭

    • 스크린샷 2024-09-29 오후 1 29 02
  • 매칭 로직: 연애 유형 설문을 통해 사용자의 MBTI를 도출하고, 성격 유형이 잘 맞는 상대를 추천하는 알고리즘 사용

  • 기능 특징:

    • 사용자 MBTI 정보 저장 및 관리
    • MBTI 유형에 따른 이상적인 매칭 상대 추천
    • 스크린샷 2024-09-29 오후 1 31 34

3) 개인 페이지 기능

  • 설명: 사용자가 로그인하면 자신의 등록된 정보를 확인할 수 있음
  • 주요 기능:
    • 이름, 성별, 나이, MBTI 정보 표시
    • 매칭 이력: 과거 매칭된 사용자 목록을 캐러셀 형식으로 확인 가능하며, 각 매칭된 사용자와 카카오톡 오픈 채팅을 통해 대화할 수 있는 기능을 제공
    • 새로운 사람과 매칭을 원할 경우, 매칭 재시도 기능 제공

4) 카카오톡 오픈채팅 기능

스크린샷 2024-09-29 오후 1 33 24 스크린샷 2024-09-29 오후 1 34 35

  • 설명: 매칭 성공 시 사용자가 입력한 카카오톡 오픈채팅방 URL을 통해 매칭 상대와 실시간으로 대화를 주고받을 수 있음
  • 주요 기능:
    • 매칭 성공 시: 사용자는 상대방의 개인 프로필 메세지와 카카오톡 오픈채팅방으로 연결되어 안전하게 대화를 시작할 수 있습니다.
    • 매칭 실패 시: 친근한 방식으로 재매칭을 시도할 수 있는 기회를 제공하여 서비스 이용을 유도합니다.

3. 보안 및 예외 처리 기능

SomeMate 프로젝트는 JWT 기반 인증을 통해 보안을 강화하고, 사용자 정보의 안전한 관리와 인증을 제공합니다.

보안 요소:

  1. JWT 토큰을 사용한 인증 및 권한 부여: 비밀번호 없이 사용자 인증 및 토큰 유효성 검증으로 상태 유지
  2. 비밀번호 암호화: BCryptPasswordEncoder를 사용해 비밀번호를 안전하게 암호화
  3. CORS 및 경로 보호: 안전한 도메인 접근을 허용하며, 회원가입 페이지는 인증 없이 접근 가능

4. SW 아키텍처

  1. 프론트엔드 (React)
    • 주요 역할: 사용자와의 인터페이스를 담당하며, 회원가입, 로그인, 프로필 확인, 매칭 결과, 카카오톡 오픈채팅 연결 등의 화면을 제공한다.
    • 기술 스택: React, Vite, Axios, Styled-components, swipable
    • 기능 구현:
      • JWT 기반 인증 처리 (로그인/로그아웃)
      • 사용자 정보 표시 및 매칭 결과 확인
      • 카카오톡 오픈채팅방 연동
  2. 백엔드 (Spring Boot)
    • 주요 역할: API 서버로서 데이터베이스와 프론트엔드 간의 통신을 처리하며, 비즈니스 로직과 보안을 관리한다.
    • 기술 스택: Spring Boot, MySQL, JWT, BCrypt
    • 기능 구현:
      • 회원가입/로그인 API 및 JWT 발급
      • MBTI 매칭 알고리즘 구현
      • 패스워드 암호화
      • 카카오톡 오픈채팅 URL 저장 및 제공
  3. 데이터베이스 (MySQL)
    • 주요 역할: 사용자 정보, MBTI 유형, 매칭 결과 및 카카오톡 오픈채팅방 URL 등의 데이터를 저장하고 관리한다.
    • 주요 테이블:
      • user: 사용자 정보 (이름, 나이, 성별, MBTI, 프로필, refresh Token, openchat)
      • matching: 매칭 결과 및 상태
      • mbti: MBTI 유형의 특징과 설명을 저장
      • best_mbti: 각 MBTI 유형에 가장 적합한 매칭 상대를 저장 (예: MBTI 유형별 최적의 매칭 정보)
      • mbti_question: MBTI 설문과 질문 데이터를 저장하며, 사용자의 성격 유형 분석에 사용
  4. 보안
    • JWT 인증: 사용자 인증 및 세션 관리를 위해 JWT(JSON Web Token)를 사용하며, 토큰 갱신 및 만료 처리를 통해 보안을 강화한다.
    • 비밀번호 암호화: BCrypt를 사용해 사용자 비밀번호를 안전하게 암호화하여 데이터베이스에 저장한다.
  5. 통신 구조
    • 클라이언트와 서버 간의 통신: Axios를 사용해 React에서 Spring Boot 서버와 REST API를 통해 통신하고, 로그인 시 JWT 토큰을 전송하여 인증을 처리한다.
    • 토큰 갱신 및 만료 처리: Access token이 만료될 경우 refresh token을 통해 새로운 토큰을 발급받아 세션을 유지한다.



주요 구현

  1. JWT 기반 인증 및 보안
    • JWT 인증: 회원가입 및 로그인 시 사용자의 인증 정보를 JWT로 발급하여, 클라이언트 측에서 저장 및 활용. API 요청 시 헤더에 JWT 토큰을 포함해 사용자 인증 처리.
    • 토큰 갱신: 만료된 토큰을 자동으로 갱신하기 위해 refresh token을 사용하며, 로그인 세션을 안전하게 유지.
  2. 비밀번호 암호화
    • BCryptPasswordEncoder를 사용하여 사용자의 비밀번호를 안전하게 암호화한 후 데이터베이스에 저장. 암호화된 비밀번호는 보안 강화와 데이터 유출 방지를 목표로 구현.
  3. MBTI 기반 매칭 알고리즘
    • 매칭 로직: 사용자의 MBTI를 바탕으로 best_mbti 테이블에서 가장 적합한 상대를 추천. 사용자와 추천된 상대의 정보를 matching 테이블에 기록하여 매칭 기록을 저장.
    • 추천 기능: 매칭된 사용자의 정보를 보여주고, 매칭 성공 시 카카오톡 오픈채팅을 통해 실시간 대화가 가능하게 구현.
  4. 카카오톡 오픈채팅 연동
    • 매칭 성공 시 사용자가 상대방과 대화할 수 있도록, 사용자가 입력한 카카오톡 오픈채팅 링크를 활용해 채팅방으로 바로 연결.
    • 안전한 대화 환경을 제공하기 위해 사용자의 개인 연락처 대신 오픈채팅 링크를 통해 소통.
  5. 설문 조사 및 성격 유형 분석
    • 사용자는 mbti_question 테이블에 저장된 질문에 답변을 제출하며, 해당 답변을 기반으로 성격 유형을 분석하여 MBTI를 결정.
    • 설문 데이터mbti_question 테이블에 저장된 질문 및 답변 정보와 매핑되어 사용자의 성격 유형을 결정하는 데 활용.
  6. 개인 페이지 및 매칭 이력 관리
    • 로그인한 사용자는 자신의 개인 정보를 확인하고, 과거 매칭된 사용자 목록을 확인할 수 있는 개인 페이지 구현.
    • 과거 매칭된 사용자는 캐러셀 형식으로 보여지며, 다시 소통을 원할 경우 오픈채팅방 링크를 통해 대화를 이어나갈 수 있음.

About

LG유레카 2차 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published