이 프로젝트는 소셜 네트워크의 뉴스피드 기능을 중심으로 구현된 웹 서비스입니다. 사용자는 게시물을 작성하고, 친구를 추가하고, 댓글이나 좋아요로 상호작용할 수 있습니다. 로그인 필터 기반의 인증 처리, 친구 기능의 양방향 관계 설정 등 실제 SNS의 핵심 기능을 직접 설계하고 구현하는 것을 목표로 했습니다.
깃 허브 링크 : https://github.com/Kimminu7/SNS_Project/tree/main
프로젝트 정리본 : https://velog.io/@todok0317/Spring-Boot-SNS-프로젝트
시연 영상 링크 : https://youtu.be/tyOUhAh4MhI
프로젝트 트러블슈팅 : https://velog.io/@todok0317/Spring-Boots-SNS-프로젝트
회원 기능
회원 가입, 로그인, 회원 정보 수정
비밀번호 유효성 검사, 로그인 필터로 인증 처리
게시물 기능
좋아요 기능 구현
댓글 기능
댓글 작성, 수정, 삭제
댓글은 게시물과 유저와의 연관관계를 가짐
댓글 작성자만 수정/삭제 가능
친구 기능
친구 요청, 수락, 삭제 기능
친구 목록 조회 (수신/송신)
친구 수락 및 삭제 시 양방향 관계 동기화 처리
친구 요청 여부 확인 및 중복 방지
인증: 필터를 이용한 로그인 인증 구현 (WebConfig, LoginFilter)
유효성 검사: @Pattern과 Service 계층 조건 검사 방식.
연관 관계: User ↔ Friend, User ↔ Post, User ↔ Comment 등 양방향/단방향 매핑 조절
CREATE TABLE `likes` (
`id` BIGINT NOT NULL DEFAULT AUTO_INCREMENT,
`board_id` BIGINT NOT NULL,
`user_id` BIGINT NOT NULL
);
CREATE TABLE `friend` (
`id` BIGINT NOT NULL DEFAULT AUTO_INCREMENT COMMENT '친구ID',
`userrequest_id` BIGINT NOT NULL,
`userresponse_id` BIGINT NOT NULL
);
CREATE TABLE `comment` (
`id` BIGINT NOT NULL DEFAULT AUTO_INCREMENT,
`created_at` LocalDateTime NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` LocalDateTime NULL DEFAULT TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`content` string NOT NULL,
`board_id` BIGINT NOT NULL,
`user_id` BIGINT NOT NULL
);
CREATE TABLE `user` (
`id` BIGINT NOT NULL DEFAULT AUTO_INCREMENT,
`name` string NOT NULL,
`age` Long NOT NULL,
`nickname` string NOT NULL,
`email` string NOT NULL,
`password` string NOT NULL,
`introduction` string NOT NULL,
`activated` Boolean NULL COMMENT '1-> true, 0-> false'
);
CREATE TABLE `board` (
`id` BIGINT NOT NULL DEFAULT AUTO_INCREMENT,
`title` string NOT NULL,
`contents` string NOT NULL,
`created_at` LocalDateTime NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` LocalDateTime NULL DEFAULT TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_id` BIGINT NOT NULL
);
ALTER TABLE `likes` ADD CONSTRAINT `PK_LIKES` PRIMARY KEY (`id`);
ALTER TABLE `friend` ADD CONSTRAINT `PK_FRIEND` PRIMARY KEY (`id`);
ALTER TABLE `comment` ADD CONSTRAINT `PK_COMMENT` PRIMARY KEY (`id`);
ALTER TABLE `user` ADD CONSTRAINT `PK_USER` PRIMARY KEY (`id`);
ALTER TABLE `board` ADD CONSTRAINT `PK_BOARD` PRIMARY KEY (`id`);