Skip to content

[인플레이스 / BE] 긴 영상은 필요 없어요 인플루언서가 다녀간 쿨플, 한눈에 쏙!

Notifications You must be signed in to change notification settings

kakao-tech-campus-2nd-step3/Team7_BE

Folders and files

NameName
Last commit message
Last commit date
Nov 15, 2024
Sep 12, 2024
Nov 15, 2024
Oct 6, 2024
Oct 3, 2024
Nov 15, 2024
Nov 14, 2024
Sep 12, 2024
Sep 12, 2024
Sep 19, 2024

Repository files navigation

Inplace ( Team7_BE )

메인 이미지

목차

  1. 프로젝트 개요

    1.1 프로젝트 목적

    1.2 서비스 정보

    1.3 배포 주소

  2. 프로그램 구조

    2.1 프로그램 구조도

    2.2 API & ERD

  3. 개발 정보

    3.1 개발 기간

    3.2 팀원

    3.3 저장소 정보

  4. 기술 정보

    4.1 주요 종속성 버전

    4.2 기술 스택

  5. 테스트

  6. 기능 및 사용 예시

    6.1 세부 기능 흐름

    6.2 사용 예시


📝 프로젝트 개요

🙌 프로젝트 목적

저희의 아이디어는 데이트 코스의 단조로움을 어떻게 하면 해소할 수 있을까? 💡 라는 생각에서 시작했습니다.

아이디어를 구체화하는 과정에서 저희는 장소에 관련된 소재로 인스타, 유튜브 등의 SNS 및 동영상 플랫폼 📱의 성장과 함께 등장한 인플루언서 라는 개념에 집중하게 되었습니다.

이는 인플루언서가 방문한 장소에 대한 정보를 서비스 해보자! 📍 라는 생각으로 이어졌습니다.

이를 통해 사용자가 관심있는 인플루언서를 등록하고, 이에 따른 장소 추천 및, 장소에 대한 리뷰 기능 📋을 제공하여, Inplace 라는 저희만의 웹 애플리케이션으로 구현해보았습니다.

📋 서비스 정보

긴 영상은 필요 없어요 인플루언서가 다녀간 쿨플, 한눈에 쏙!

  1. 회원가입 및 로그인
    • Spring Security를 이용한 OAuth 2.0 카카오 로그인 기능을 사용합니다
    • 쿠키에 Access, Refresh Token을 담아 사용하며, Refresh 동작을 수행할 수 있습니다
  2. 현재 위치 기반 서비스
    • 웹 페이지의 위치 정보 사용에 동의시, 카카오 API와 내 위치 정보를 사용하여 주변의 장소 정보와, 자동 지도 위치 설정을 사용할 수 있습니다
  3. 통합 검색 서비스
    • Elastic Search를 사용한 인플루언서, 장소, 비디오 이름에 대한 통합 검색 기능을 사용할 수 있습니다
  4. 관심 인플루언서 등록 및 이를 토대로 한 서비스
    • 최초 로그인 시 & 인플루언서 페이지에서 관심 인플루언서를 등록할 수 있습니다
    • 이를 토대로 메인 페이지에서 관심 인플루언서의 최신 방문 장소를 확인할 수 있습니다
  5. 지도 기반 검색 서비스
    • 지도 API를 이용하여 장소를 검색할 수 있습니다
      • 관심 등록하지 않은 인플루언서 및 주소, 장소 태그를 이용하여 세부 검색이 가능합니다
  6. 장소 세부 정보 서비스
    • 장소의 세부 정보를 열람할 수 있습니다
    • 장소에 달린 다른 유저들의 리뷰를 확인할 수 있습니다
    • 장소에 대한 좋아요 기능을 사용할 수 있습니다
    • 장소 세부 페이지에서 장소에 대한 정보를 카카오톡 메세지로 받아 볼 수 있습니다
  7. 리뷰 기능
    • 장소 정보를 받은 후 3일 뒤, 해당 장소에 대한 리뷰 링크를 받아 리뷰를 작성할 수 있습니다
    • 위 기능들은 카카오톡 메세지 보내기 API를 이용하며, 카카오톡으로 전송되는 링크는 모바일 뷰를 지원합니다
  8. 마이 페이지 기능
    • 좋아요 표시한 장소, 인플루언서를 관리할 수 있습니다
    • 내가 작성한 리뷰를 관리할 수 있습니다
    • 사용자 닉네임을 변경할 수 있습니다

🌐 배포 주소

BackEnd : api.inplace.my

FrontEnd: inplace.my


🏗️ 프로그램 구조

🖼️ 프로그램 구조도

📊 API & ERD

image

image


👨‍💻 개발 정보

📅 개발 기간

2024.08.22 ~ 2024.11.15

👥 팀원

Frontend
Frontend

이정민

이효은
Backend
Backend
Backend
Backend
Backend

이상희

김동윤

정수현

우현서

배준호

📂 저장소 정보

Using Language

GitHub language count GitHub top language

Repo, Code Volume

GitHub code size in bytes GitHub repo size

Commit Avg

GitHub commit activity

Issues

GitHub open issues GitHub closed issues

PRs

GitHub pull requests GitHub closed pull requests


🛠️ 기술 정보

🧩 주요 종속성 버전

Spring Boots 3.3.3

Java 17 LTS

🚀 기술 스택

Backend

Spring Boot Lombok

Security

Spring Security JWT

DB

Spring Data JPA QueryDSL MySQL Redis

Web

Spring WebFlux

Deployment

AWS EC2 Docker

Admin Page

jQuery Thymeleaf AJAX

Test

JMeter JUnit Mockito

Code Maintenance

Git GitHub GitHub Actions

Collaboration Tool

Discord Slack


✅ 테스트

테스트 시나리오 : https://www.notion.so/9ed68b292c004fc69f7eaad513054d96

테스트 결과보고서 : https://www.notion.so/08a520d3b8c44154a19425b0bcc16f6f


🎬 기능 및 사용 예시

🔍 세부 기능 흐름

  • Spring Security

    • oauth 로그인 시, jwt로 accessToken과 refreshToken을 Cookie에 담아줍니다.
      • oauthToken은 aes알고리즘으로 암호화 되어 db에 저장됩니다.
    • 모든 요청은 AuthorizationFilter에서 Cookie에 있는 토큰이 유효한지 확인하고, 유효하면 Authenticate합니다.
  • PlaceMessage

    • 요청이 오면 webClient(비동기)로 나에게보내기 kakao api를 통해 장소 정보를 보냅니다.
    • 3일 뒤 나에게 보내기 kakao api를 통해 리뷰 요청 메세지를 보냅니다.
  • TokenRefresh

    • Redis DB에 username(key)로 refreshToken을 확인하고, RTR (Refresh Token Rotation)을 합니다.
  • Influencer

    • 로그인 상태인 경우 사용자가 좋아요한 인플루언서를 먼저 반환합니다.
  • FavoriteInfluencer

    • 로그인 상태를 확인한 후 좋아요/ 싫어요 요청을 처리합니다.
    • 내가 좋아요한 인플루언서 정보를 반환합니다.
  • Review

    • 로그인 상태를 확인한 후 리뷰 추가, 리뷰 삭제 요청을 처리합니다.
    • 장소별 리뷰 조회 시 본인이 작성한 리뷰인지 여부를 포함하여 반환합니다.
    • 내가 작성한 리뷰 조회 시 장소 정보 일부를 함께 반환합니다.
  • Place

    • 내가 좋아요한 장소 조회 시 인플루언서 정보 일부를 함께 반환합니다.
  • Video

    • 로그인 상태인 경우 사용자가 좋아요한 인플루언서의 동영상, 사용자 주변 장소의 동영상을 반환합니다.
    • 로그인 상태가 아닌 경우 조회수 증가량이 높은 동영상, 새로운 동영상을 반환합니다.

📱 사용 예시

실제 유저 사용 페이지 흐름 보여주기 ( 영상 x )

About

[인플레이스 / BE] 긴 영상은 필요 없어요 인플루언서가 다녀간 쿨플, 한눈에 쏙!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published