Pinterest-clone-playdata / pinterest-clone

1 stars 1 forks source link

#9. 프로젝트 설명, 정리 #29

Open pineplanet opened 2 years ago

pineplanet commented 2 years ago

프로젝트 주제

pinterest 에 기초하여 사용자가 사진(jpg, jpeg, png, gif 등) 을 업로드, 공유 하고 다른 사용자와 소통할 수 있는 웹 서비스를 제공합니다. (수정 필요하면 써주세요. )

주제 선정 이유

이미지 파일을 다루는 백엔드 기술과 이미지 뿐 아니라 유저 편의성이 높은 프론트 엔드 기술을 다양하게 학습 하고 직접 만들어 볼 수 있을 것 이라 생각 했으며, 더 나아가 추후에는 이미지 서버에 쌓이는 데이터들을 이용하여 딥러닝을 이용한 기술 을 학습 하여 서비스 할 수 있을 것 이라고 생각 하여 해당 주제를 선정 하였습니다. (수정 필요하면 써주세요. )

프로젝트 중 주요 초점

(수정 필요하면 써주세요. )

객체 지향적인 설계와 리팩토링

RestAPI 사용

git, git flow 사용

보안 기능 적용

에러 처리

객체 처리

사용 stack

pintereststack 001

데이터 베이스 DDL

pinterest_db_diagram

create table USER ( USER_ID BIGINT auto_increment primary key, CREATE_DATE TIMESTAMP, MODIFIED_DATE TIMESTAMP, EMAIL VARCHAR(255), PASSWORD VARCHAR(20), PATH VARCHAR(255), USERNAME VARCHAR(30) );

create table FOLLOWER ( ID BIGINT auto_increment primary key, CREATE_DATE TIMESTAMP, MODIFIED_DATE TIMESTAMP, TO_ID BIGINT, FROM_ID BIGINT, constraint FK253K7981XV64OVPJMBV39RAVM foreign key (FROM_ID) references USER (USER_ID), constraint FK7L8YU2TGL8COEPDQ7Q6NL2ULG foreign key (TO_ID) references USER (USER_ID) );

create table PIN ( ID INT auto_increment primary key, CREATE_DATE TIMESTAMP, MODIFIED_DATE TIMESTAMP, CONTENT TEXT not null, COUNT INT, PATH VARCHAR(255) not null, ROLE VARCHAR(255) not null, TITLE VARCHAR(50) not null, USER_ID BIGINT, constraint FKG9F9IV6QP02XP8QYK40QJQ00O foreign key (USER_ID) references USER (USER_ID) );

create table COMMENT ( COMMENT_ID BIGINT auto_increment primary key, CREATE_DATE TIMESTAMP, MODIFIED_DATE TIMESTAMP, CONTENT VARCHAR(1000) not null, COUNT INT, PIN_ID INT, USER_ID BIGINT, constraint FK8KCUM44FVPUPYW6F5BACCX25C foreign key (USER_ID) references USER (USER_ID), constraint FKMK6NAITTWCDKKLM9R29NL6FF1 foreign key (PIN_ID) references PIN (ID) );

create table COMMENT_LIKE ( LIKES_ID BIGINT auto_increment primary key, CREATE_DATE TIMESTAMP, MODIFIED_DATE TIMESTAMP, COMMENT_ID BIGINT, USER_ID BIGINT, constraint FK6ARWB0J7BY23PW04LJDTXQ4P5 foreign key (USER_ID) references USER (USER_ID), constraint FKQLV8PHL1IBEH0EFV4DBN3720P foreign key (COMMENT_ID) references COMMENT (COMMENT_ID) );

create table LIKE_IMAGE ( LIKES_ID BIGINT auto_increment primary key, CREATE_DATE TIMESTAMP, MODIFIED_DATE TIMESTAMP, IMAGE_ID INT, USER_ID BIGINT, constraint FK76KX7LXCFJN1EN9D1LHE7JC4L foreign key (IMAGE_ID) references PIN (ID), constraint FKREH9KIUHU5VITBM9Y1V8NOVCV foreign key (USER_ID) references USER (USER_ID) );

구현한 기능 목록

회원 관리

◼ 유저는 회원 가입, 회원 탈퇴, 개인 정보 수정 기능을 할 수 있어야 한다. ◼ 회원 탈퇴 시에는 엑세스 토큰이 적합할 경우에만 허용 ◼ 회원 탈퇴 시 DB에서 유저의 정보를 가능하면 전부 다 없앤다.

로그인, 로그아웃

◼ 보안은 OAuth2.0을 사용하기로 했음. 소셜 로그인의 장점을 사용하기 위해서 채택 -> jwt 로 변경 ◼ 유저가 로그인 할 때 엑세스 토큰을 주입할 예정 ◼ 로그아웃 // 로그인을 하지 않을 시 볼 수 없음.

Follower

◼ 유저는 특정 유저에 대한 정보를 저장할 수 있다. ◼ 유저는 그 특정 유저에 대한 Pin을 볼 수 있어야 한다. (Public 일 경우) ◼ 해당 유저가 회원 탈퇴를 한 경우 데이터베이스에서 팔로우 한 유저의 정보가 삭제 되어야 한다.

Pin

◼ Pin 업로드 ◼ Pin 수정 ◼ Pin 삭제 ◼ Pin 읽기 = 업로드 시간 순, 팔로워 업로드 순, 자신이 올린 업로드 순으로 볼 수 있 어야 한다.

Pin Like

◼ 특정 Pin을 좋다고 표현이 가능해야 한다. ◼ Like를 한 Pin을 정렬해서 보여줄 수 있어야 한다.

Comment

◼ 유저는 Pin에 대해서 댓글을 작성, 수정, 삭제가 가능해야 한다. ◼ Pin이 사라질 경우 데이터베이스에서도 Comment의 데이터가 사라져야만 한다.

Comment Like

◼ 특정 comment를 좋다고 표현이 가능해야 한다. ◼ 좋아요를 한 번 더 누르면 취소 되어야 한다. ( 같은 코멘트에 대해 좋아요를 중복할 수 없다)

구현 예정 기능 목록

보드 작성, 수정, 삭제, 게시 기능

쪽지 또는 실시간 채팅 기능

유저 관심에 맞는 핀 추천 기능

기능 구현 이슈 와 이슈 해결 방법 (추가 해주세요)

유저 로그인, 보안 관련 기능 이슈

에러 관련 이슈

프론트 이슈

swagger 관련 이슈