Code Monkey home page Code Monkey logo

2022-nae-pyeon's Introduction

내편

내 마음을 편지로, 내편

프로젝트 소개 💌

내편은 롤링페이퍼 서비스입니다. 원하는 사람들과 모임을 만들어 롤링페이퍼를 작성할 수 있습니다.
내편 서비스를 통해 내 편에게 마음을 전달해보아요!

팀원 👩‍👦‍👦

프론트엔드 프론트엔드 백엔드 백엔드 백엔드 백엔드
도리 소피아 케이 승팡 알렉스 제로
도리 소피아 케이 승팡 알렉스 제로

프로젝트 기술스택 🏰

백엔드 🏫

백엔드기술스택

프론트엔드 🏡

프론트엔드기술스택

프로젝트 아키텍처 📚

백엔드 프로젝트 아키텍처 📙

백엔드_프로젝트_아키텍처

프론트엔드 프로젝트 아키텍처 📘

CI/CD

슬라이드5

팀 문화

팀문화

2022-nae-pyeon's People

Contributors

asebn1 avatar kth990303 avatar prefer2 avatar seungpang avatar soyi47 avatar yxxnghwan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

2022-nae-pyeon's Issues

[BE] Repository 계층 설계를 확정한다.

기능 상세

  • 현재 repository 계층은 #9 를 따른다.

    • 이 방법은 JPA 기술 스택에서 다른 스택으로 변경할 때, 변경의 용이성때문에 선택한 방법.
    • 하지만, 변경 전까지 spring data jpa에서 제공해주는 반복이라는 장점을 전혀 사용하지 못한다는 단점 존재.
  • JpaRepository 또는 Repository를 직접 이용할지, 아니면 현 방안을 유지할지?

  • 변경을 하지 않는다면 issue close를, 변경을 한다면 pr 후 close를 해주자.

    • test code에서 JPA 기술 스택 종속성을 끊자. 변경을 한다면, 이 이슈는 별도 처리 없이 자동으로 해결된다.

[BE] 도메인에 대한 검증과 도메인 테스트를 추가한다.

도메인 기능 정의 및 구현

  • #47
    • 롤링페이퍼 필드 범위를 정의한다.
      • 제목
    • 메시지 필드 범위를 정의한다.
      • 내용
    • 회원 필드 범위를 정의한다.
      • 이름
      • 이메일
      • 패스워드
    • 모임 필드 범위를 정의한다.
      • 이름
  • 도메인에 대한 검증을 구현한다.
  • 도메인 테스트 추가한다.

[FE] 롤링페이퍼 페이지 UI 구현

상세 내용

  • 롤링페이퍼의 이름을 보여준다
  • 롤링페이퍼 대상을 보여준다
  • 롤링페이퍼 메시지 작성 버튼이 있다
  • 작성된 메시지들을 보여준다

[BE] 백엔드 CRUD 코드 컨벤션을 맞춘다.

기능 상세

  • lombok을 적용한 생성자, getter 등의 코드 컨벤션을 통일한다.
    • lombok을 활용하는 방안으로 간다.
  • id의 @GeneratedValue의 strategy를 IDENTITY로 통일한다.
  • Repository Test는 인터페이스를 테스트하는 코드로 통일한다. #21
  • test method에는 public을 붙이지 않는다.
  • EOL을 관리한다. (Repository Test EOL) github convention

[BE] @GeneratedValue를 IDENTITY로 수정했을 때 테스트 격리를 시킨다.

기능 상세

image

- 테스트 격리가 이루어지지 않아 에러가 발생한다.
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation: "PUBLIC.UK_MBMCQELTY0FBRVXP1Q58DN57T_INDEX_8 ON PUBLIC.MEMBER(EMAIL NULLS FIRST) VALUES ( /* 3 */ '[email protected]' )"; SQL statement:
insert into member (member_id, email, password, username) values (default, ?, ?, ?) [23505-214]

[BE] 모임 관련 API 변경

기능 상세

  • 모임 엔티티 속성 추가(이모지, 컬러)
  • 변경 구조에 맞춰서 api 변경
  • 변경된 엔티티 필드 반영 및 테스트 코드 수정

[FE] 회원가입 페이지를 구현한다.

기능 상세

  • 이메일, 이름, 비밀번호, 비밀번호 확인을 입력할 수 있다.
  • 회원가입 요청 로직을 구현한다. 확인 버튼을 눌러 회원가입 요청을 보낼 수 있다.
  • 회원가입 API mocking 코드를 작성한다.

[BE] 롤링페이퍼, 메시지, 회원, 모임 관련 인수 테스트를 작성한다.

기능 상세

  • 롤링페이퍼, 메시지의 인수테스트는 현재 작성되지 않은 상황.
    • AcceptanceFixture의 픽스쳐를 이용하여 테스트를 작성하자.
  • 인수 테스트 작성 시, 성공 케이스 뿐 아니라 실패하는 케이스까지 작성한다.
    • #82
      • 이미 가입된 회원이 추가되는 경우 예외를 발생시킨다.
      • 회원 이름을 수정할 때, 20자를 초과하는 이름으로 수정하는 경우 예외를 발생시킨다.
      • 가입한 회원을 조회한다.
      • 존재하지 않는 id로 회원 조회를 하려 하는 경우 예외를 발생시킨다.
      • 존재하지 않는 회원을 삭제하려 하는 경우 예외를 발생시킨다.
    • #107
      • 모임을 중복해서 생성하는 경우 예외를 발생시킨다.
      • 모임에 회원을 가입시킨다.
      • 모임에 이미 가입된 회원을 가입시키려 하는 경우 예외를 발생시킨다.
      • 모임에 가입된 회원 목록을 조회한다.
      • 모임 이름을 수정할 때, 20자를 초과하는 이름으로 수정하는 경우 예외를 발생시킨다.
      • 생성된 모임을 조회한다.
      • 존재하지 않는 id로 모임 조회를 하려 하는 경우 예외를 발생시킨다.
      • 존재하지 않는 모임을 삭제하려 하는 경우 예외를 발생시킨다.
    • #104
      • 특정 회원에게 롤링페이퍼를 생성한다.
      • 특정 모임에게 롤링페이퍼를 생성한다.
      • 동일한 대상에게 롤링페이퍼를 여러 번 생성한다.
      • 존재하지 않는 회원에게 롤링페이퍼를 생성하는 경우 예외를 발생시킨다.
      • 존재하지 않는 모임에게 롤링페이퍼를 생성하는 경우 예외를 발생시킨다.
      • 특정 모임의 롤링페이퍼 목록을 조회한다.
      • 특정 회원의 롤링페이퍼 목록을 조회한다.
      • 올바르지 않은 롤링페이퍼를 조회할 경우 예외를 발생시킨다.
      • 롤링페이퍼 이름을 수정한다.
      • 롤링페이퍼 이름을 20자 초과하여 수정할 경우 예외를 발생시킨다.
      • 롤링페이퍼를 삭제한다.
      • 존재하지 않는 롤링페이퍼를 삭제하는 경우 예외를 발생시킨다.
      • 특정 모임에서 회원이 삭제될 때, 롤링페이퍼는 삭제된다. (추후에 논의)
      • 회원이 서비스 자체에서 삭제될 때, 롤링페이퍼는 삭제된다. (추후에 논의)
    • #106
      • 롤링페이퍼 내에 메시지를 생성한다.
      • 롤링페이퍼 내에 동일한 사람이 동일한 메시지를 여러 개 생성할 수 있다.
      • 특정 롤링페이퍼의 메시지들을 모두 조회한다.
      • 특정 회원에게 작성된 메시지들을 모두 조회한다.
      • 메시지 내용을 수정한다.
      • 메시지 내용을 500자 초과하여 수정할 경우 예외를 발생시킨다.
      • 메시지를 삭제한다.
      • 존재하지 않는 메시지를 삭제할 경우 예외를 발생시킨다.
      • 롤링페이퍼가 삭제될 경우, 그에 해당되는 메시지들이 모두 삭제된다.
      • 특정 회원이나 모임이 삭제될 때, 그에 해당된 메시지들은 모두 삭제된다. (추후에 논의)

[BE] 회원이 모임에 가입할 수 있는 기능을 구현한다.

상세 내용

  • 회원이 모임에 참여할 수 있다.
  • 모임에서 회원 목록을 조회할 수 있다.
  • 회원은 참여한 모임 목록을 조회할 수 있다.
  • 회원이 모임에서 탈퇴할 수 있다.
  • 모임은 회원 목록에서 특정 회원을 탈퇴시킬 수 있다.

[FE] SearchInput 컴포넌트를 보완한다.

기능 상세

  • input에 focus in하면, 검색어 목록이 보인다.
  • 검색어 항목 선택하면, 검색어 목록이 업데이트 된다.
  • 검색어 목록에서 항목에 hover하면, 항목 배경 색상이 변경된다.

[BE] 회원 관련 인수 테스트를 작성한다.

회원 ATDD

  • 회원 추가
    • 회원을 추가하고 검증한다. (회원추가, 단건조회)
    • 이미 가입된 회원이 추가되는 경우 예외를 발생한다.
    • 회원 가입 시, 회원 이름이 2 ~ 20자 및 한글, 영어, 숫자가 아닌 경우 예외가 발생한다.
    • 회원 가입 시, 이메일이 기본 이메일 형식이 아닌 경우 예외가 발생한다.
    • 회원 가입 시, 비밀번호가 8 ~ 20자 및 영어, 숫자가 포함되지 않는 경우 예외가 발생한다.
  • 회원 조회
    • 올바르지 않은 토큰으로 마이페이지를 조회할 경우 예외가 발생한다.
    • 존재하지 않는 id로 회원 조회를 하려 하는 경우 예외가 발생한다.
  • 회원 수정
    • 회원 정보를 수정할 수 있다.
    • 올바르지 않은 토큰으로 수정할 경우 예외가 발생한다.
    • 회원 수정 시, 회원 이름이 2 ~ 20자 및 한글, 영어, 숫자가 아닌 경우 예외가 발생한다.
  • 회원 삭제
    • 회원을 삭제할 수 있다.
    • 올바르지 않은 토큰으로 삭제할 경우 예외가 발생한다.
    • 존재하지 않는 회원을 삭제하려 하는 경우 예외가 발생한다.

[FE] 메시지 편집 페이지와 상세보기 페이지 구현

기능 상세

메시지 편집 페이지

  • 편집할 메시지 내용을 볼 수 있다.
  • 완료 버튼을 누르면 수정한 메시지를 저장할 수 있다.

메시지 상세보기 페이지

  • 선택한 메시지 내용을 볼 수 있다.
  • 메시지 편집 버튼을 누르면 메시지 편집 페이지로 이동할 수 있다.
  • 메시지 삭제 버튼을 누르면 삭제할 수 있다.

[BE] 롤링페이퍼 내 메시지를 삭제할 때, 메시지가 삭제되지 않거나 롤링페이퍼까지 삭제된다.

기능 상세

  • 메시지가 2개 이상일 때는 메시지가 삭제되지 않는다.
org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FKHJKCIG938RKBS2IM1VLE4A81N: PUBLIC.MESSAGE FOREIGN KEY(ROLLINGPAPER_ID) REFERENCES PUBLIC.ROLLINGPAPER(ROLLINGPAPER_ID) (CAST(2 AS BIGINT))"; SQL statement:
delete from rollingpaper where rollingpaper_id=? [23503-214]

image

  • 메시지가 1개 이하일 때는, 메시지가 삭제될 때 롤링페이퍼까지 삭제된다.
  • cascade 문제일 확률이 높은 듯 함.

[FE] 롤링페이퍼 관련 API 요청 및 응답 처리 로직을 구현한다.

기능 상세

  • 페이지 라우팅을 구현한다.
  • 롤링페이퍼 생성 페이지에서 롤링페이퍼 생성(POST) 요청을 보내고 응답을 처리한다.
  • 롤링페이퍼 페이지에서 롤링페이퍼 단건 조회(GET) 요청을 보내고 응답을 처리한다.
  • 메시지 작성 페이지에서 메시지 작성 및 추가(POST) 요청을 보내고 응답을 처리한다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.