pinterest 에 기초하여 사용자가 사진(jpg, jpeg, png, gif 등) 을 업로드, 공유 하고 다른 사용자와 소통할 수 있는 웹 서비스를 제공합니다.
(수정 필요하면 써주세요. )
주제 선정 이유
이미지 파일을 다루는 백엔드 기술과 이미지 뿐 아니라 유저 편의성이 높은 프론트 엔드 기술을 다양하게 학습 하고 직접 만들어 볼 수 있을 것 이라 생각 했으며, 더 나아가 추후에는 이미지 서버에 쌓이는 데이터들을 이용하여 딥러닝을 이용한 기술 을 학습 하여 서비스 할 수 있을 것 이라고 생각 하여 해당 주제를 선정 하였습니다.
(수정 필요하면 써주세요. )
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)
);
프로젝트 주제
pinterest 에 기초하여 사용자가 사진(jpg, jpeg, png, gif 등) 을 업로드, 공유 하고 다른 사용자와 소통할 수 있는 웹 서비스를 제공합니다. (수정 필요하면 써주세요. )
주제 선정 이유
이미지 파일을 다루는 백엔드 기술과 이미지 뿐 아니라 유저 편의성이 높은 프론트 엔드 기술을 다양하게 학습 하고 직접 만들어 볼 수 있을 것 이라 생각 했으며, 더 나아가 추후에는 이미지 서버에 쌓이는 데이터들을 이용하여 딥러닝을 이용한 기술 을 학습 하여 서비스 할 수 있을 것 이라고 생각 하여 해당 주제를 선정 하였습니다. (수정 필요하면 써주세요. )
프로젝트 중 주요 초점
(수정 필요하면 써주세요. )
객체 지향적인 설계와 리팩토링
RestAPI 사용
git, git flow 사용
보안 기능 적용
에러 처리
객체 처리
사용 stack
데이터 베이스 DDL
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 관련 이슈