Skip to content

SideProjectSFY/cloneNova

Repository files navigation

CLONENOVA Project

📋 프로젝트 개요

프로젝트 정보

  • 프로젝트명: CloneNOVA
  • 진행일자: 2025.10.13 - 2025.11.01
  • 예상 구현 시간
    • 필수기능: 3 weeks

프로젝트 목표

  • Java Spring 기반의 웹 애플리케이션 개발

  • Restful HTTP 통신기반 서버 개발

  • MVC 패턴을 활용한 구조 설계 및 구현 (Domain 향 첨가)

    Member (Controller - Service - Repository)
    Auth (Controller - Service - Repository)
    Ranking(Controller - Service - Repository)
    ...
    
  • 데이터베이스 연동 및 CRUD 기능 구현

  • OAuth, PortOne(결제 API) 실습을 통해서 익히기

  • Redis 사용 방법 익히기

  • 협업 능력 익히기

  • Jenkins를 통한 CI 파이프라인 설계

  • GitOps + ArgoCD를 통한 무중단 CD

  • CQRS 도입을 통한 데이터 트래픽 분산


🛠 기술 스택

개발 언어 및 도구

  • Database: MySQL, Redis, JPA
  • Backend: Java 17, Eclipse/IntelliJ
  • Frontend: Next.js, React, PandaCSS, (BFF)
  • etc: Spring Security, Jwt, Cookie/Session

사용 데이터

  • 찐 CodeNova

📊 기능적 요구사항

1. 회원/인증 기능

1.1 인증 기능

번호 요구사항명 요구사항 상세 우선순위
AF01 회원 가입 회원 정보를 등록하는 기능 필수
AF02 ID/PW 회원 로그인 ID/PW를 이용한 회원 로그인을 지원하는 기능 필수
AF03 아이디 찾기 신청 SMTP를 이용하여 회원의 아이디를 찾는 기능 필수
AF04 아이디 찾기 인증 SMTP를 통해 받은 코드를 인증하는 기능 필수
AF05 구글 로그인 구글 OAuth를 이용한 로그인 기능 필수
AF06 카카오 로그인 카카오 OAuth를 이용한 로그인 기능 선택
AF07 엑세스 토큰 재발급 엑세스 토큰 만료 시 재발급 해주는 기능 선택
AF08 비밀번호 재설정 신청 회원 비밀번호 분실 시 재설정 신청 기능 선택
AF09 비밀번호 재설정 인증 회원 비밀번호 분실 시 재설정 인증 기능 선택
AF10 신규 회원 2FA 등록 신규 가입 시 Google Authentication 등록하는 기능 선택
AF11 2FA 인증 2FA 코드 인증 기능 선택

주요 기능:

  • 가입/로그인/아이디 찾기 기능
  • Google OAuth, ID/PW 로그인을 통한 회원 인증 다각화
  • Google, Kakako 등 연동 기능
  • SMTP를 이용한 아이디 찾기 신청/인증 기능
  • (선택) 엑세스 토큰 만료 시 리프레시 토큰을 이용한 재발급 기능
  • (선택) KaKao OAuth 추가를 통한 인증 수단 추가
  • (선택) SMTP를 이용한 비밀번호 재설정
  • (선택) Google Authentication을 이용한 2FA 전략 추가

1.2 회원 관리 기능

번호 요구사항명 요구사항 상세 우선순위
MF01 회원 개인 프로필 정보 조회 회원 본인에 대한 정보를 조회하는 기능 필수
MF02 회원 개인 정보 업데이트 회원에 대한 정보를 업데이트 기능 필수
MF03 회원 삭제(탈퇴) 회원 정보를 삭제하는 기능 (삭제 대신 '비활성화'로 상태변경) 필수

주요 기능:

  • 회원 개인 정보 조회/업데이트
  • 회원 개인 게임 정보 조회
  • 회원 삭제(탈퇴) 기능
  • 로그인 / 로그아웃 기능

2. 상품/결제 기능

2.1 상품 기능

번호 요구사항명 요구사항 상세 우선순위
SF01 상품 목록 조회 상점 내 상품에 대한 정보 조회 필수
SF02 특정 상품 상세 조회 특정 상품에 대한 구체적인 정보 조회 필수

주요 기능:

  • 상품에 대한 목록을 조회
  • 특정 상품에 대한 구체적인 정보를 조회

2.2 결제 관리

번호 요구사항명 요구사항 상세 우선순위
PF01 결제 준비 (주문 생성) 포트원 API를 이용한 결제 준비 신청 기능 필수
PF02 결제 완료 및 검증 (재화 지급) 포트원 API를 이용한 결제 이후 완료 후 재화 지급까지 진행하는 기능 필수
PF03 포트원 웹훅 수신 포트원 API로 부터 오는 재 검증 웹훅을 수신하는 기능 필수
PF04 회원 본인 구매 내역 조회 회원 본인의 구매 내역을 조회하는 기능 필수
PF05 회원 본인 구매 내역 상세 조회 특정 구매 내역에 대한 세부적인 내용 조회하는 기능 필수
PF06 환불 요청 구매한 재화에 대해서 환불 신청하는 기능 필수
PF07 회원 본인 환불 내역 조회 회원이 환불한 내역을 조회하는 기능 필수
PF08 환불 가능 여부 확인 특정 구매에 대한 환불이 가능한지 확인하는 기능 필수
PF09 환불 처리(관리자) 관리자 권한을 이용한 환불 완전 처리 기능 선택
PF10 결제 내역 조회(관리자) 관리자 권한을 이용한 특정 회원에 대한 결제 내역 조회기능 선택
PF11 결제 실패 서버에러, 잔액부족 등 알림창으로 알려주는 기능 필수

주요 기능:

  • 결제/환불에 대한 기능
  • 구매 내역에 대한 조회 기능
  • (선택) 관리자 권한을 통한 특정 사용자 결제 내역 조회
  • (선택) 관리자 권한을 이용한 환불 최종 처리 프로세스를 통한 분기 구분

2.3 재화 관리

번호 요구사항명 요구사항 상세 우선순위
WF01 보유 재화 조회 회원이 현재 보유하고 있는 재화의 수량 및 종류를 조회하는 기능 필수
WF02 재화 거래 내역 조회 재화의 획득, 사용, 환불 등 시간 순에 따른 모든 거래 기록을 조회하는 기능 필수
WF03 재화 거래 내용 검색 필터링 회원이 거래한 내역을 필터링(날짜, 금액)하여 검색하는 기능 선택

주요 기능:

  • 회원의 보유한 재화 및 재화 거래 내역 조회 기능

3. 게임/랭킹 기능

번호 요구사항명 요구사항 상세 우선순위
GF01 게임 결과 저장 게임 플레이 후 최종 점수, 시간, 승패 등 결과를 데이터베이스에 저장하는 기능 필수
GF02 각 게임 별 랭킹 조회 전체 회원을 대상으로 특정 게임의 점수/기록 순으로 상위 랭킹 목록을 조회하는 기능 필수
GF03 본인 점수에 따른 랭킹 조회 로그인한 회원 본인의 점수를 기준으로 전후 일정 범위의 랭킹을 조회하는 기능 필수
GF04 회원 개인 게임 정보 조회 회원 본인에 대한 게임 통계 정보를 조회하는 기능 필수
GF05 특정 회원 게임 정보 조회 특정 회원이 참여한 게임 목록과 각 게임에서의 최고 랭킹 및 기록을 조회하는 기능 필수

주요 기능:

  • 게임 결과 저장 및 그에 따른 랭킹 작성
  • 회원 개인의 랭킹 등수 확인
  • 전체 랭킹 확인
  • 특정 회원 랭킹 등수 확인

4. 팔로우/팔로잉 기능

번호 요구사항명 요구사항 상세 우선순위
FF01 회원 팔로잉 정보 조회 회원 본인에 대한 팔로잉 정보를 조회하는 기능 필수
FF02 회원 팔로워 정보 조회 회원 본인에 대한 팔로워 정보를 조회하는 기능 필수
FF03 회원 검색 회원 이름 기반 검색 필수
FF04 회원 팔로잉 추가 타 회원을 팔로잉 목록에 추가하는 기능 필수
FF05 회원 팔로잉 삭제 회원 본인이 추가한 팔로잉을 삭제하는 기능 필수
FF06 회원 정보 조회 타 회원의 정보를 보는 기능 선택
FF07 회원 검색 필터 다각화 회원 검색 필터 다양화 선택

주요 기능:

  • 회원 팔로잉/팔로워 정보 조회
  • 회원 이름 기반 검색 기능
  • 회원 팔로잉 추가/삭제
  • (선택) 타 회원 개인/게임 정보 조회
  • (선택) 회원 검색 기능 필터 추가

🏗 시스템 아키텍처

Servlet + JSP MVC 패턴 구조

Client (Browser)
    ↓ (1) HTTP 요청 (GET/POST/PUT/DELETE)
DTO (Data Transport Object)
    ↓ (2)
Controller
    ↓ (3) 요청 파라미터 추출 및 비즈니스 로직 호출
Service
    ↓ (4) 비즈니스 로직 전달 시 Vo 반환
Vo
    ↓ (5) 구현체에 Vo 전달
Repository (MySQL)
    ↓ (6) 구현체 내부 JPA를 이용한 데이터 저장/조회 (Entity 자체로 추출 X)
JPA

📝 작업 순서

  1. 요구사항 확인 및 정리

    • 팀원과 같이 요구사항(기본/추가/심화)을 확인하고, 할 일을 정리
    • Markdown 문법을 이용하여 기능 정리
    • Use Case Diagram 작성
  2. 데이터베이스 설계

    • ERD (Entity Relationship Diagram) 작성
    • 테이블 구조 설계 및 DDL 작성
    • MySQL Workbench를 활용한 데이터베이스 구축
  3. MVC 패턴 구현

    • Model: DTO/VO 클래스 작성, DAO 클래스 및 JDBC 연결 구현
    • Controller: Servlet 클래스 작성 (doGet, doPost 메서드 구현)
    • View: JSP 페이지 작성, EL/JSTL을 활용한 데이터 표현
  4. 기능 구현

    • 필수 기능 구현 (영상 관리, 리뷰 관리, 회원 관리)
    • 추가 기능 구현 (찜 영상, 커뮤니티, 운동계획)
    • 심화 기능 구현 (AI 활용 등)
  5. 추가 아이디어 논의 및 정리

    • 팀원과 같이 추가적으로(새로운 아이디어)를 논의하고 정리
  6. 테스트 및 디버깅

    • 기능별 테스트 수행
    • 버그 수정 및 예외 처리
  7. 프로젝트 완성

    • 추가적인 아이디어를 적용하여 구현하고 프로젝트를 완성
    • 산출물 정리 및 문서화

💻 화면 구성 예시

주요 화면 목록

  1. 메인화면

    • 최근 가장 많이 본 영상 표시
    • 검색 기능
  2. 로그인

    • 아이디/비밀번호 입력
    • 로그인 버튼
    • 회원가입 링크
  3. 회원가입

    • 아이디, 이름, 비밀번호, 비밀번호 확인 입력
    • 회원가입 버튼
  4. 게임화면

About

크크크클론노바

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages