스포츠 종목에 특화된 중고거래 플랫폼으로, 사용자의 선호 종목과 구력(숙련도) 정보를 기반으로 맞춤형 장비 추천을 제공하고, 카카오 지도 API를 활용해 인근 운동장을 안내하며, 지역 운동 모임까지 연결하는 스포츠 전문 커머스 & 커뮤니티 웹 서비스입니다.
| 역할 | 권한 |
|---|---|
| 회원 | 온보딩(선호 종목·구력), 상품 CRUD, 관심 태그, 채팅, 거래 신청, 판매 이력/ 거래 상태 관리 |
| 관리자 | 상품/회원 관리 및 신고 처리 |
| 기능 영역 | 기능 | 설명 | 조건·제약 | 비고 |
|---|---|---|---|---|
| 계정 & 온보딩 | 회원가입 / 로그인 | 이메일 또는 소셜 로그인으로 사용자 계정 생성 및 인증 | 이메일 중복 불가, 비밀번호 보안 기준 충족 | 이메일 인증, JWT 발급 |
| 온보딩 (선호 정보 설정) | 로그인 후 선호 종목과 숙련도 입력 | 로그인 상태 필요 | 구력(입문~상급) 선택 가능 | |
| 사용자 프로필 | 개인정보 조회 및 수정 | 닉네임, 선호 종목, 숙련도 등 수정 | 로그인 필요 | 마이페이지 내 관리 |
| 거래내역 조회 | 판매/구매 완료된 거래 내역 확인 | 거래 상태=완료 조건 | 마이페이지 내 표시 | |
| 찜목록 조회 | 찜한 상품 목록 확인 | 로그인 필요 | 수정 및 삭제 가능 | |
| 타 사용자 프로필 조회 | 타 사용자의 닉네임, 선호 종목, 숙련도 등 조회 | 로그인 필요 | 타 사용자의 게시글의 프로필을 통해 접근 가능 | |
| 타 사용장 게시물 조회 | 타 사용자가 작성한 게시물 조회 | 로그인 필요 | 타 사용자의 프로필을 통해 접근 가능 | |
| 중고거래 | 카테고리 분류 | 종목별 상품 분류 (축구, 농구, 테니스, 골프 등) | 종목 미입력 시 etc로 분류 | 카테고리별 페이지 구성 |
| 상품 등록 | 판매자가 스포츠 장비 등록 (제목, 종목, 가격 등) | 필수 입력 누락 시 등록 불가 | 이미지 업로드 가능 | |
| 상품 상세 조회 | 상품 정보, 판매자 정보, 거래 지역,거래 상태 표시 | 상품 ID 필요 | 찜, 채팅 기능 포함 | |
| 상품 상태 관리 | 판매중/예약중/판매완료 상태 변경 | 판매자만 변경 가능 | 거래 진행 시 자동 변경 | |
| 상품 삭제 | 판매자가 자신의 물품 삭제 가능 | 본인 게시글만 삭제 가능 | 관련 데이터 동시 삭제 | |
| 좋아요(찜) | 찜 기능 | 사용자가 관심 상품을 등록/조회 가능 | 로그인 필요 | 관심목록에서 관리 가능 (관심목록은 마이페이지에서 조회 가능) |
| 거래 리뷰(시간 남으면 구현) | 거래 리뷰 작성 | 거래 완료 후 리뷰 작성 가능 | 거래 내역 존재해야 함 | 리뷰 작성 후 확인 가능 |
| 거래 기능 | 거래 예약 | 채팅방에서 예약 기능으로 거래 생성 | 구매자·판매자 모두 로그인 필요 | 예약 시 “예약중”으로 거래 생성, 다른 사용자들이 이 물품에 대한 채팅방 생성 불가능 |
| 거래 완료 | 거래 종료 시 판매자가 상태 변경 | 예약 상태에서만 완료 가능 | 거래내역에 자동 반영 | |
| 거래 취소 | 판매자/구매자 둘 중 한 명이 거래 취소 가능 | 예약 상태에서만 취소 가능 | 취소되면 물품은 다시 ‘판매중’ 상태로 보임 | |
| 검색 & 추천 | 상품 검색 | 제목 기반 상품 검색 | 검색어 미입력 시 결과 없음 | 종목 필터링 가능 (추가 예정), 시간 되면 닉네임 검색 |
| 정렬 기능 | 최신순, 가격순(최고, 최저), 조회수 순, 찜 순 | |||
| LLM 기반 추천 | 사용자 구력·종목 기반 맞춤 등록되어 있는 상품 추천. | |||
| 추천 제품에는 검색 url을 하이퍼링크로 걸어줌. | 온보딩 정보 필요 | Alan 모델 활용 | ||
| 가능하다면, 검색 결과가 없는 제품은 다른 사이트 링크 걸기 | ||||
| 카카오 지도 API | 운동장 위치 탐색 | 종목별 운동장 위치를 지도에 표시 | API Key 필요 | 마커 및 정보창 표시 |
| 운동장 상세 정보 | 주소, 운영시간, 예약 링크 등 표시 | 외부 데이터 조회 필요 | Kakao Map API 사용 | |
| 커뮤니티 / 번개 | 게시글 조회 | 전체 게시글 / 운동별 / 번개글 필터링 | 로그인 상태 필요 | 게시판 탭에서 접근 |
| 디폴트는 전체 게시글 | ||||
| 게시글 상세 조회 | 게시글 상세 조회 기능 | 로그인 필요 | 현재는 이미지들을 하단에 까는 식으로 설정. | |
| 시간이 되면 html 태그 상태로 content에 저장시켜서 이미지를 원하는 위치에 넣도록 설정 (html 새니타이저 필요) | ||||
| 일반 운동글 작성 | 운동 주제 일반 게시글 작성 | 제목, 본문, 운동 종목 필수 | ||
| (자유게시판은 운동 테이블의 ‘공용’ 사용) | DTO 처리 | |||
| 커뮤니티 게시글 검색 | 제목, 닉네임 검색 | 제목이나 닉네임 안적으면 결과 없음 처리 | 시간 나면 이 기능 구현 | |
| 번개글 작성 | 시간, 장소, 현재 인원, 최대 인원, 오픈카톡 링크(여기까지 필수), 기타 사항 입력 | 필수 항목 누락 시 등록 불가 | 폼 내용 + 기타 사항이 게시글의 본문으로 저장됨 | |
| 채팅 | 유저간 1:1 채팅 | 판매글에서 채팅 버튼 클릭 시 1:1 채팅 생성 | 중복 생성 불가, 판매글 통해서만 채팅 생성 | 시간 되면 판매 외에도 유저간 채팅 기능 활성화 |
홈화면 (카테고리별로 물품 한 5개 정도? 최신순으로 보여주기)
헤더
검색바 (물품 검색 기능; 커뮤니티는 검색바 따로)
카테고리 탭 (운동 종목별)
운동장 탭이 따로 있고 (여기서는 카카오맵 api로 정보를 가져옴)
“테니스장” → 카카오 지도에 핀으로 주변 테니스장 마커 표시
채팅 탭 (이전 프로젝트에서 가져오기)