Skip to content

Ogu-Family/fiml-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Funding Is My Life

Tumblbug 클론 코딩 프로젝트

프로젝트 소개

크라우드 펀딩 플랫폼인 텀블벅을 클론 코딩한 프로젝트입니다.

프로젝트 목적

  • 텀블벅 기능을 구현하기 위한 도메인 분석 및 설계
  • 프로젝트 생성부터 후원, 그리고 정산까지 프로젝트의 전체 흐름을 이해하고 구현
  • Spring Boot, JPA, QueryDSL, MySQL, Gradle 등을 활용한 기본적인 백엔드 기술 스택 학습
  • Git을 통한 형상 관리 및 GitHub Project를 활용한 이슈 관리 및 협업
  • 테스트 코드(단위 테스트, 통합 테스트) 작성을 통한 신뢰성 높은 코드 작성

텀블벅 주요 기능 및 구현 기능 목록

텀블벅에서 제공하는 모든 기능이 아닌 주요 기능을 분석하여 이번 프로젝트에서 구현할 기능을 아래와 같이 선정하였습니다.

  • 회원가입 및 로그인 인증
  • 후원 프로젝트 생성 및 수정
  • 후원 프로젝트에 대한 리워드 생성 및 수정
  • 프로젝트 상세 및 리스트 조회
  • 프로젝트 공지사항 및 댓글 작성
  • 프로젝트 후원
  • 후원 기간이 종료된 프로젝트에 대한 결제
  • 결제가 완료된 프로젝트에 대한 창작자에게 정산
  • 창작자 팔로우 및 프로젝트 좋아요

텀블벅 후원의 흐름

image

  1. 프로젝트 생성
  2. 프로젝트 업로드: 필요한 정보를 모두 입력 후 최종 업로드
  3. 프로젝트 노출: 프로젝트가 노출되고 사용자들이 프로젝트를 확인 가능
  4. 후원 시작: 후원 시작일이 되면 후원 가능 상태로 변경되면서 사용자들의 후원 시작
  5. 후원 중: 후원 신청 시 결제 정보 생성, 펀딩 종료 전까지 후원 변경/취소 가능
  6. 후원 종료: 펀딩 종료 시점에 후원 금액에 따라 성공/실패로 변경
  7. 후원 종료 후 7일: 후원 종료일 다음 날부터 7일 동안 24시간 간격으로 결제 시도
  8. 정산 완료: 결제 완료 금액 수수료 계산 후 창작자에게 정산

핵심 도메인 및 비즈니스 로직 설계

텀블벅에서 제공하는 기능을 구현하기 위해 핵심 도메인 및 비즈니스 로직을 아래와 같이 설계하였습니다.

프로젝트 상태 관리

image

  1. 작성 중: 펀딩에 필요한 정보를 입력받는 단계로, 일반 사용자는 프로젝트를 조회할 수 없는 상태
    • 펀딩에 필요한 정보를 단계 별로 나누어 여러 API를 통해 데이터 업데이트
  2. 준비 중: 프로젝트가 최종 업로드 되어, 사용자가 프로젝트를 조회할 수 있는 상태
    • 모든 값들이 올바르게 생성되었는지 유효성 검사 수행하여 올바르지 않은 상태의 프로젝트가 업로드 되지 않도록 방지
  3. 진행 중: 프로젝트 후원 시작 상태로, 사용자가 실제로 후원 및 후원 취소를 할 수 있는 상태
    • 스케줄러를 통해 펀딩 시작 시간이 되면 ‘진행 중’ 상태로 업데이트
  4. 펀딩 성공 / 펀딩 실패: 펀딩 종료 시점에 후원 금액에 따라 성공/실패로 변경
    • 펀딩 종료 시간이 되면 금액에 따라 상태 변경
  5. 정산 완료: 결제된 금액 창작자에게 정산
    • 스케줄러를 통해 펀딩 완료 된 프로젝트 중 정산이 완료되지 않은 프로젝트를 조회하여 정산 진행
  6. 취소: 프로젝트 중단 혹은 삭제 된 상태

후원-결제-정산 플로우

image

  1. 후원 시작 및 종료
    • 후원 신청 시 펀딩 종료일 다음 날을 결제 요청일로 하는 결제 정보 생성
    • 펀딩 종료 전까지 후원 변경/취소 가능
  2. 결제 시도
    • 스프링 스케줄러를 통해 결제가 진행되어야 하는 후원 조회 및 7일 동안 결제 시도
      • 결제 실패 시: 다음 날을 결제 요청일로 하는 새로운 결제 정보 생성
      • 7일 동안 결제를 실패한 경우: 후원 상태를 결제 실패로 변경하여 최종적으로 후원 실패 상태로 변경
  3. 정산
    • 스프링 스케줄러를 통해 정산이 진행되어야 하는 프로젝트 조회 및 정산 정보 생성

** 실제 결제 API 대신 회원의 소지 금액 정보 컬럼을 추가하여 해당 금액만큼 차감하는 방식으로 구현하였습니다.


회원 및 인증

  • JWT 활용한 회원 인증 및 식별
  • @AuthenticationPrincipal 어노테이션을 통해 로그인한 회원 정보를 가져올 수 있도록 구현

ERD

image


팀원 소개

Name 권효승 박유진 이유정
Profile

기술 스택


협업 도구

About

Tumblbug Clone Coding Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages