Skip to content

ljkhyeong/Soccer-Fan-Board

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Soccer-Fan-Board

스크린샷 2024-01-16 오전 5 38 07

관련 링크

프론트엔드 깃허브 : https://github.com/ljkhyeong/Soccer-Fan-Board-frontend

배포 :http://13.125.252.116/

  • 서버 불안정 상황을 위해, 원활한 로컬 환경 테스트 GIF를 아래에 첨부했습니다.
로컬 테스트 GIF

회원가입/로그인

무제

위키

무제2

스크래핑 및 선수단 정보

스크래핑 선수단정보

게시글

게시글

댓글

댓글

개요

본 프로젝트는 축구 팬들에게 관련 팀 정보(선수단 정보, 경기일정 등)들과 소통 커뮤니티(위키문서, 게시판)를 제공하기 위한 프로젝트다. (현재 epl만 지원)

기술 스택

요구사항

  1. 모든 회원
  • 회원가입 및 로그인:
    • 누구나 회원가입을 할 수 있어야 하며, 아이디와 비밀번호를 이용하여 로그인 할 수 있어야 한다.
    • 소셜계정을 연동해 회원가입을 할 수 있어야 한다.
    • 회원가입 시 필요한 정보는 이메일, 비밀번호, 사용자 이름 등이다.
  • 회원 정보:
    • 누구나 비공개 처리된 정보를 제외한 특정 회원 관련 정보를 확인할 수 있어야 한다.
    • 누구나 특정 회원 혹은 비회원(IP)을 차단할 수 있어야 한다.
  • 팀 선택:
    • 모든 사용자는 원하는 팀을 선택하여 관련 위키, 게시판, 팀 정보 등을 열람할 수 있어야 한다.
  • 위키 문서 열람:
    • 모든 사용자는 생성된 팀 위키 문서를 자유롭게 열람할 수 있어야 한다.
    • 생성된 위키 문서는 수정하거나 삭제할 수 없다.
    • 내용이 선정적이거나 불쾌함을 주거나 부적절하면 신고할 수 있어야 한다.
  • 경기 일정 및 선수단 정보 열람:
    • 모든 사용자는 경기 일정 및 선수단 정보를 열람할 수 있어야 한다.
    • 특정 선수 정보를 클릭하면 공격 포인트, 개인수상 등 세부정보를 열람할 수 있어야 한다.
  • 게시판 열람:
    • 모든 사용자는 차단된 사용자의 글을 제외한 모든 팀의 게시물 및 댓글을 자유롭게 열람할 수 있어야 한다.
    • 분류된 탭을 통해서 베스트/전체글을 조회할 수 있어야 한다.
    • 분류된 탭을 통해서 원하는 말머리의 글만 조회할 수 있어야 한다.
    • 검색기능을 이용하여 원하는 글만 조회할 수 있어야 한다.
    • 내용이 선정적이거나 불쾌함을 주거나 부적절하면 신고할 수 있어야 한다.
  1. 등록된 회원
  • 회원정보 수정:
    • 로그인된 회원은 회원정보를 수정할 수 있어야 한다.
    • 로그인된 회원은 회원정보의 공개여부를 수정할 수 있어야 한다.
  • 팀 위키문서 작성:
    • 로그인된 회원은 팀 위키문서를 작성할 수 있어야 한다. 팀 소개, 역사, 중요 이벤트 등의 내용을 포함할 수 있어야 한다.
  • 게시판 이용:
    • 로그인된 회원은 게시판에 글을 작성, 수정, 삭제할 수 있어야 한다.
    • 로그인된 회원은 게시판의 글에 댓글을 작성, 삭제할 수 있어야 한다.
    • 로그인된 회원은 게시판의 글에 좋아요나 싫어요를 누를 수 있어야 한다.
  1. 등록되지 않은 회원
  • 팀 위키문서 작성:
    • 비회원은 임시닉네임/IP주소 앞부분(ex: 127.0)으로 팀 위키문서를 작성할 수 있어야 한다. 팀 소개, 역사, 중요 이벤트 등의 내용을 포함할 수 있다.
  • 게시판 이용:
    • 비회원은 게시판에 임시닉네임/임시비밀번호/IP주소 앞부분으로 글을 작성, 수정, 삭제할 수 있어야 한다.
    • 비회원은 게시판의 글에 임시닉네임/임시비밀번호/IP주소 앞부분으로 댓글을 작성, 삭제할 수 있어야 한다.
  1. 기술 요구사항
  • 데이터베이스
    • 사용자 정보, 위키 문서, 게시판 글 및 댓글, 경기 일정 및 선수단 정보를 저장하기 위한 데이터베이스가 필요하다.
  • 보안
    • 사용자 비밀번호는 암호화하여 저장해야 한다.
    • 로그인 시스템은 보안적으로 안전해야 하며, jwt 기반 인증을 사용한다.
  • 인터페이스:
    • 사용자 친화적인 웹 인터페이스를 갖추어야 한다.
  • 확장성:
    • 향후 기능 추가나 변경을 고려한 유연한 설계가 필요하다.
  1. 추가 고려사항
  • 다국어 지원:
    • 다양한 사용자를 위해 다국어 지원을 고려할 수 있다.
  • 타 리그 지원:
    • 다양한 사용자를 위해 다양한 국가 리그, 하부 리그, 국가대표 정보 및 공간 지원을 고려할 수 있다.

API

API 명세
  1. 인증 컨트롤러 (AuthController)
  • POST /api/v1/auth/login
    • 목적: 사용자 로그인
    • 요청 본문: LoginRequestDto (로그인 ID, 비밀번호 등)
    • 응답:
      • 성공 시: Response (성공 메시지)
      • 실패 시: 오류 메시지
  • POST /api/v1/auth/refresh
    • 목적: 액세스 토큰 갱신
    • 요청: 쿠키에 포함된 리프레시 토큰
    • 응답:
      • 성공 시: Response (새로운 액세스 및 리프레시 토큰을 쿠키에 설정)
      • 실패 시: 오류 메시지
  • DELETE /api/v1/auth/refresh
    • 목적: 리프레시 토큰 비활성화
    • 요청: 쿠키에 포함된 리프레시 토큰
    • 응답:
      • 성공 시: Response (토큰 제거)
      • 실패 시: 오류 메시지
  1. 게시물 컨트롤러 (PostApiController)
  • GET /api/v1/{teamCode}/posts
    • 목적: 모든 게시물 조회
    • 응답: Page: 게시물 목록
  • POST /api/v1/{teamCode}/posts
    • 목적: 새 게시물 작성
    • 요청 본문: PostCreateRequestDto (게시물 제목, 내용 등)
    • 응답:
      • 성공 시: Response
      • 실패 시: 오류 메시지
  • GET /api/v1/{teamCode}/posts/{postId}
    • 목적: 특정 게시물 조회
    • 매개변수: postId: 게시물 ID
    • 응답: PostDetailResponseDto: 게시물 상세 정보
  1. 댓글 컨트롤러 (CommentApiController)
  • GET /api/v1/{teamCode}/posts/{postId}/comments
    • 목적: 특정 게시물의 모든 댓글 조회
    • 매개변수: postId: 게시물 ID
    • 응답: Page: 댓글 목록
  • POST /api/v1/{teamCode}/posts/{postId}/comment
    • 목적: 특정 게시물에 댓글 작성
    • 매개변수: postId: 게시물 ID
    • 요청 본문: CommentCreateRequestDto (댓글 내용 등)
    • 응답:
      • 성공 시: Response
      • 실패 시: 오류 메시지
  1. 사용자 컨트롤러 (UserApiController)
  • POST /api/v1/user
    • 목적: 새 사용자 계정 생성
    • 요청 본문: UserCreateRequestDto (사용자 정보)
    • 응답:
      • 성공 시: Response
      • 실패 시: 오류 메시지
  • PUT /api/v1/user
    • 목적: 사용자 정보 업데이트
    • 요청 본문: UserUpdateRequestDto (업데이트할 사용자 정보)
    • 응답:
      • 성공 시: Response
      • 실패 시: 오류 메시지
  • DELETE /api/v1/user
    • 목적: 사용자 계정 삭제
    • 응답:
      • 성공 시: Response
      • 실패 시: 오류 메시지
  1. 위키 컨트롤러 (WikiApiController)
  • �GET /api/v1/{teamCode}/wiki
    • 목적: 위키 최신문서 확인
    • 응답: DocVersionDetailResponseDto
  • GET /api/v1/{teamCode}/wiki/{wikiDocId}
    • 목적: 해당 버전 위키문서 조회
    • 응답: DocVersionDetailResponseDto
  • GET /api/v1/{teamCode}/wiki/{wikiDocId}/list
    • 목적: 모든 버전 위키문서 조회
    • 응답: Page: 위키문서 버전 목록
  • POST /api/v1/{teamCode}/wiki
    • 목적: 새 버전 위키문서 작성
    • 요청 본문: DocVersionCreateRequestDto (위키문서 제목, 내용)
    • 응답:
      • 성공 시: Response
      • 실패 시: 오류 메시지
  1. 선수 컨트롤러 (PlayerApiController)
  • �GET /api/v1/{teamCode}/players
    • 목적: 선수단 확인
    • 응답: Page: 선수 목록
  1. 팀 컨트롤러 (TeamApiController)
  • �GET /api/v1/{teamCode}
    • 목적: 팀 정보 확인
    • 응답: TeamResponseDto

About

축구 팬들을 위한 게시판

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published