Tiny Star

🏕️내일배움캠프/📂Trello 만들기(23.08.07)

Trello 만들기 1일 _ S.A. 작성 및 백엔드 코드 작성

청크 2023. 8. 8. 21:34

스파르타 코딩클럽_내일 배움 캠프 spring 트랙 6기

[프로젝트] Trello 만들기

2023.08.07 ~ 2023.08.14

<프로젝트 정보>

개발도구 : IntelliJ

프로그래밍 언어 : Java

데이터베이스 : MySQL

프레임워크 : Spring

저장소 : GitHub

기타서비스 : Postman

 

 

<프로젝트 내용>

Trello에서 제공하는 기능들을 직접 구현해보는 프로젝트

 

가입한 회원들을 대상으로 프로젝트를 관리할 수 있는 보드, 칼럼, 카드를 만들고 타 회원을 초대해서 협업에 사용할 수도 있는 기능을구현하기로 했다.

 

사용자 관리, 보드 관리, 칼럼관리, 카드 관리, 카드 댓글관리 5개의 필수 구현 사항이 주어졌다.

 

내가 맡은 기능은 칼럼 관리로 칼럼 조회(조회 시 카드 리스트도 같이 조회가 되야한다.), 칼럼 생성, 칼럼 이름 수정, 칼럼 이동, 칼럼 삭제다.

 

[칼럼 관리 API]

· 칼럼 조회 : GET  - Http://localhost:8080/column

· 칼럼 생성 : POST - Http://localhost:8080/column

· 칼럼 이름 수정 : PUT - Http://localhost:8080/column/{id}

· 칼럼 조회 : DELETE - Http://localhost:8080/column/{id}

 

[칼럼 관리 ERD]

ERD를 짜면서 고민이었던게 타 회원을 초대해서 협업에 사용할 수도 있는 기능에 대해 권한을 어떻게 부여할 것인가?에 대해 고민하게 되었다.

 

이건 팀원들이랑 그룹 기반의 권한과 각 보드별 기반의 권한으로 나눠서 각각의 장단점을 고민해보고 

튜터님께 찾아가서 질문을 드렸더니 구현을 어떻게 할 것인가에 따라 달라지기 때문에 정답은 없다하셨다.

 

그룹 기반 권한을 설정하게 된다면 그룹 단위로 권한 관리가 용이하지만 사용자마다 각각의 다른 권한을 부여하기가 어려울 수 있고

보드 기반 권한을 설정하게 된다면 각 보드마다 세밀한 권한 여부가 조정이 가능 한 대신 보드가 늘어나게 된다면 관리 자체가 복잡해진다.

 

-> 1안(왼쪽) : group을 생성 후, 인증객체를 만들 때 그룹권한을 user에게 부여

-> 2안(오른쪽) : Board를 만들 때 user를 초대하므로, Board의 Entity에 Userlist 설정.

 

각 기준 별로 Entity를 짜보고 2안으로  팀원들이랑 상의해서 2안으로 진행하기로 결정했다.

 

백엔드 코드는 하루만에 뚝딱! 작성했으나, 포스트맨에서 실행이 안되서 마저 수정하고 실행이 되는 코드로 올려야겠다.