HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
💡
[팀 04] 동규라미
/
🎾
기획서
🎾

기획서

팀명 : 동규라미프로젝트명 : 스팸(SFam) ⇒ Sports Family# 팀 #동네 #매칭개요기간팀원기술 스택요구 사항유저스토리유스케이스매칭팀 관리회원관리후기 작성와이어 프레임ERD

팀명 : 동규라미

프로젝트명 : 스팸(SFam) ⇒ Sports Family

# 팀 #동네 #매칭

notion image
 

개요

  • 주제
    • 동네에서 같이 운동할 사람을 모아 팀을 만들고, 근처의 다른 팀들과 스포츠 경기를 진행할 수 있는 커뮤니티 서비스
  • 선정 배경
    • 사람들은 여가/취미활동으로 다양한 스포츠를 즐긴다. 가족 단위로 즐기기도 하고, 친구들과 모여 즐기기도 한다. 관심이 있는 사람들은 동호회에 들어가 동호회 회원들과 즐기기도 한다. 그런데 주변 사람들과 시간이 맞지 않으면 스포츠 경기를 진행할 수 없다. 이런 문제를 해결하기 위해 위 서비스를 기획하게 되었다.
    • 기존에도 해당 문제를 해결하기 위한 노력은 계속해서 진행되어 왔다. 그러나 대부분의 서비스의 경우 풋살 경기만을 매칭하는 서비스였다.
      • 플랩풋볼
        • 풋살 매칭
        • 구장 예약 서비스
      • 퍼즐풋볼
        • 플랩풋볼과 비슷한 서비스
        • 개인별 랭킹이 있음
        • 경기가 기록된다는 차별점이 있음
      • 뚜잇
        • 풋살 매칭 서비스
      • 바로매치
        • 기획한 서비스랑 일치하는 서비스인 것 같음
        • 서비스가 오래되고 사용자가 없음
      • 핀공
        • 좀 다른 결인데, 다른 볼링장에 있는 사람들끼리 매칭
        • 화면으로 서로의 플레이를 보여주는 서비스
    • 기획한 서비스와 비슷하게 여러가지 스포츠를 매칭하는 페어플레이라는 서비스가 존재한다. 그러나 해당 서비스는 아웃도어 액티비티(등산, 서핑 등)에 초점을 맞추고 있기 때문에 제한적인 수의 스포츠 매칭만 가능하다.
    • 이러한 시장 조사를 통해 더 많은 스포츠를 매칭할 수 있는 서비스가 필요하다고 판단해 위 서비스를 기획하게 되었다.
  • 타겟
    • 서비스의 타겟은 다음과 같다.
      • 스포츠를 즐기고 싶지만 주변에 같이 할 사람이 없는 사람
        • 이왕이면 동네에서 운동친구를 구하고 싶다.
        • 같은 운동 취미를 가진 친구를 구하고 싶다.
      • 같은 팀으로 플레이 할 사람은 있지만 상대를 구하지 못한 사람
      • 동호회에 들어가고 싶은 사람
      • 운동에 좀 더 재미를 붙이고 싶은 사람
      • 나의 객관적인 전적을 파악하고 싶은 사람
      • 상대 전력을 파악하고 싶은 사람
      • 다른 강자들을 꺾고 싶은 사람
  • 주요 기능
    • 다양한 종류의 운동 매칭이 가능하다.
    • 팀을 생성하고 팀전이 가능하다.
    • 사용자 근처의 사용자들과 스포츠 매칭 가능
    • 사용자나 팀의 전적 조회 가능

기간

🌟
2022년 7월 21일 - 2022년 8월 16일 (총 27일)

팀원

  • 백엔드
    • [PO] Crong (김형욱, 크롱)
    • [SM] HyeB (박혜빈, 혭)
    • [Developer] Mark (곽동운, 마크)
    • [Developer] Elizabeth (김병연, 엘리자베th)
    • [Developer] NULL (박진형, 널)
  • 프론트엔드
    • [PO] Papa (김창민, 파파)
    • [SM] Lawrence (장규범, 로렌스)
    • [Developer] Claire (신승연, 클레어)
    • [Developer] Thompson (홍정기, 톰슨)

기술 스택

🪟 프론트엔드
  • React
  • TypeScript
  • Next.js
  • Recoil
  • Emotion
  • Axios
 
🎒 백엔드
  • SpringBoot 2.7.1
  • Java 17
  • Gradle 7.4.1
  • Junit5
  • MySQL
  • Flyway
  • Swagger
  • AWS
  • JPA
 
📃  문서/협업
  • Jira
  • Notion
  • Slack
  • Git
 

요구 사항

유저스토리

유스케이스

매칭

notion image
유즈케이스명
매칭
액터명
모집자, 신청자
개요
사용자가 대결 상대를 찾기 위해 매칭 시스템을 이용한다
사전조건
모집자와 신청자 모두 회원이어야 한다
사후조건
대결 공고 글은 마감되고 삭제할 수 없다
기본흐름
1. 모집자는 대결 공고 글을 올린다 2. 신청자는 대결 공고 글을 조회한다 3. 신청자는 대결 신청을 한다 4. 모집자는 대화를 승낙한다 5. 모집자와 신청자는 대화를 한다 6. 모집자는 대결을 확정한다
대체흐름
4a. 모집자가 대화를 거부하는 경우 4a.1. 모집자와 신청자는 매칭 성사가 되지 않는다
대체흐름
6a. 모집자가 대결을 거부하는 경우 6a.1. 모집자와 신청자는 매칭 성사가 되지 않는다

팀 관리

notion image
유즈케이스명
새로운 팀을 생성할 수 있다.
액터명
사용자
개요
사용자가 매칭과 팀원 초대를 위해 팀을 생성한다.
사전조건
로그인 된 사용자여야 한다.
사후조건
- 요청이 성공하면 해당 팀의 팀장 역할을 부여 받고, 팀 프로필 페이지로 이동한다. - 요청이 실패하면 생성 페이지에서 오류를 출력한다.
기본흐름
1. 사용자가 팀 생성 버튼을 누른다. 2. 사용자가 팀 생성 페이지로 이동한다. 3. 사용자가 팀 생성에 필요한 정보를 입력한다. 4. 팀 생성 완료 버튼을 누른다. 5. 팀 생성이 완료된다. 6. 팀 프로필 페이지로 이동한다.
대체흐름
5a. 팀 생성이 실패한 경우 5a.1 사용자에게 오류가 발생했다는 사실을 알리고 유스케이스를 종료한다.
유즈케이스명
팀에 사용자를 초대할 수 있다.
액터명
사용자
개요
사용자가 팀원을 초대한다.
사전조건
- 로그인 된 사용자여야 한다. - 해당 팀의 팀장 권한을 가진 사용자여야 한다.
사후조건
- 요청이 성공하면 선택한 사용자에게 초대 요청을 발송한다. - 요청이 실패하면 오류를 출력한다.
기본흐름
1. 사용자가 팀 프로필 페이지에서 팀원 초대 버튼을 누른다. 2. 사용자가 팀원 추가/수락 페이지로 이동한다. 3. 사용자가 팀원으로 초대할 사용자를 검색한다. 4. 특정 사용자를 선택한다. 5. 사용자 초대 버튼을 누른다. 6. 초대된 사용자는 초대를 수락한다. 7. 초대한 사용자가 팀원에 추가된다.
대체흐름
6a. 초대 받은 사용자가 초대를 거절한 경우 6a.1 초대한 사용자에게 거절했다는 사실을 알리고 유스케이스를 종료한다.

회원관리

notion image
유즈케이스명
회원 관리
액터명
회원, 비회원
개요
사용자가 서비스를 이용하기 위해 로그인을 한다.
사전조건
회원가입 된 사용자여야 한다.
사후조건
- 회원가입 완료시 로그인 페이지로 이동한다.
기본흐름
1. 비회원은 사용자 프로필을 조회한다. 2. 회원가입 버튼을 눌러 회원가입을 한다. 3. 로그인 페이지로 이동하여 로그인을 완료한다. 4. 로그인 된 사용자는 사용자 프로필을 조회한다. 5. 사용자 프로필을 수정한다. 6. 로그인 된 사용자는 팀 프로필 페이지를 조회한다.
대체흐름
4a. 접근 권한이 없는 페이지에 접근 할 경우 4a.1 로그인 페이지로 이동한다.

후기 작성

notion image
유즈케이스명
후기
액터명
사용자
개요
사용자가 대결이 끝난 후 대결에 대한 후기를 작성할 수 있다.
사전조건
- 사용자가 대결을 마친 이후여야 한다. - 사용자가 로그인이 된 사용자여야 한다.
사후조건
- 사용자가 본인이 보낸 후기를 확인할 수 있다. - 사용자가 본인이 받은 후기를 확인할 수 있다.
기본흐름
1. 사용자가 대결을 마친다. 2. 사용자는 매치 종료 버튼을 누른다. 3. 사용자는 승패 결과를 입력한다. 4. 사용자는 대결이 끝나면 상대의 매너를 평가하기 위해 경기 후기를 작성한다. 5. 사용자는 대결 후기를 조회한다.
대체흐름
3a. 대결이 끝나 승패 결과를 입력했는데 대결 공고글을 올린 사용자와 신청자의 결과가 다른 경우 3a.1 대결 승패 결과가 일치할 때만 결과를 반영한다. 다른 경우에는 사용자의 승패 결과를 반영하지 못한다.

와이어 프레임

notion image
notion image

ERD

notion image