아이디 : admin@naver.com
pwd : Y@3r9o$7aaak
아이디 kimSky@naver.com
pwd :Y@3r9o$7k
- feat: 새로운 기능 추가, 요구 사항 변경으로 인해 기존 기능 변경
- fix: 버그 수정
- docs: 문서 추가 및 수정 (주석 등)
- style: 코드 스타일 수정 (포매팅, 세미콜론 누락 등)
- refactor: 프로덕션 코드 리팩토링 (버그 수정이나 기능 추가를 제외한 코드 변경)
- test: 테스트 코드 추가 및 리팩토링 (기능을 구현할 때 테스트 코드를 함께 작성했다면 feat 사용)
- chore: 빌드, 배포 등 기타 작업들을 추가 및 수정
- rename: 파일명 변경
- remove: 파일 삭제
- revert: 작업 되돌리기
온라인 스터디 플랫폼으로 스터디 그룹을 쉽게 생성하고 참여할 수 있도록 하며, 사용자가 스터디를 개최하고 참여함으로써 지속적인 학습과 커뮤니티 형성을 지원하다. 개발자들에게는 스터디는 지식공유와 함께 성장의 핵심 요소 중 하나여서 많은 개발자들은 스터디를 이용한다. 이 플랫폼을 통해 프로젝트를 통해 인원을 모으거나 cs공부, 코딩테스트 공부 등 지속적인 성장을 할 수 있도록 지원한다.
- 코딩테스트와 프로젝트, cs, 기타 카테고리를 나눔으로써 사용자가 필요한 스터디를 찾기 쉽도록 구성.
- 관심 게시글을 등록하면 마이페이지에 저장.
| 메인화면 | 회원가입 |
|---|---|
![]() |
![]() |
| 비회원 | 상세페이지[관리자] |
|---|---|
![]() |
![]() |
| 게시글 상세(자신 게시글) | 게시글 상세(타인 게시글) |
|---|---|
![]() |
![]() |
| 글쓰기[모든 사용자] | 마이페이지[모든 사용자] |
|---|---|
![]() |
![]() |
| 회원정보[관리자] | 전체글[관리자] |
|---|---|
![]() |
![]() |
| 공통 | 사용자 | 관리자 |
|---|---|---|
|
- 회원가입
- 일반 로그인 - 네이버, 카카오 소셜 로그인 연동 - 메인 페이지 게시글 조회 기능 - 게시글 상세 조회 및 댓글 조회 기능 |
- 게시글 관리
- 관심 게시글 및 내가 작성한 게시글 조회 - 사용자 정보 조회 및 수정 기능 - 댓글 관리 |
- 사용자 전체 게시글 조회 기능
- 회원 정보 조회 기능 - 사용자 게시글 삭제 기능 |
회원 가입 및 로그인, 로그아웃 기능
-
구현 기능
- 사용자 회원 가입
- 일반 로그인과 로 네이버, 카카오 소셜 로그인 연동
- 로그아웃 기능
-
구현 방법
- 회원 가입 : 사용자 회원 정보를 받아 DB 저장
- 회원가입 :
BCryptPasswordEncoder를 이용하여 단방향 해시 암호화 - 비밀번호와 비밀번호 확인이 같은지 체크
- 이미 가입한 회원인지 확인
- 회원가입 :
- 로그인 : 로그인 양식을 받아 DB의 비밀번호와 같은지 확인 후, Access Token, Refresh Token 발급
- 네이버, 카카오 소셜 로그인 연동
- 성공 시, 메인으로 이동하며 loginSuccess=true 표시 및 Access Token, Refresh Token 발급
- 실패 시, 메인으로 이동하며 loginSuccess=false 표시
- 로그아웃: 로그아웃 요청 시, Refresh Token 제거
- 회원 가입 : 사용자 회원 정보를 받아 DB 저장
Spring Security, JWT 발급 및 재발급
- 구현 기능
- Spring Security, JWT 발급
- JWT토큰 재발급
- 구현 방법
-
JWT
- 로그인 시, Refresh Token DB에 저장
- Access Token 재발급
/renew-token로 요청- 기존 Access Token과 Refresh Token 일치하는 지 비교
- 기존 Access Token이 만료되었다면
- Access Token 재발급하여 header에 Access Token과 Refresh Token 전송
- 둘다 만료가 되지 않았다면
- header에 기존의 Access Token과 Refresh Token 전송
- Refresh Token도 만료되었을 경우
- "토큰이 만료되었습니다. 다시 로그인해주세요" 예외 발생
- 기존 Access Token과 Refresh Token 일치하는 지 비교
-
Spring Security
- 사용자, 관리자 권한 설정하여 API 요청에 따라 접근 제어
-
메인 페이지 게시글 조회 기능
- 구현 기능
- 모집 중인 게시글 조회 기능
- 카테고리는 기타, CS, 전체, 코테, 프로젝트로 조회 가능
- 조회 순서는 최신순, 인기순으로 조회 가능
- 오프라인/온라인 여부 : 전체, 온라인, 오프라인
- 구현 방법
- 기본 정렬은 최신순으로 조회되며, 카테고리는 전체 조회로 됨
- 기본 정렬은 전체로 조회됨.
- 카테고리 및 주문 순서 별 게시글 조회
- 카테고리 및 주문 순서에 대한 정보를 받아 Querydsl 동적 쿼리를 이용하여 모집중인 게시글만 조회
PageableExecutionUtils사용하여 페이징 처리하여 게시글 조회- null값을 이용하여 동적 쿼리를 이용하여 게시 조회
- 서브 쿼리를 이용하여 댓글 수 조회
- board테이블과 join하여 조회수 조회
- 10개씩 게시글 조회가 되며, 크기 조절 가능
게시글 상세 조회 및 댓글 조회 기능
- 구현 기능
- 게시글 상세 조회 및 댓글 조회 기능
- 구현 방법
- 쿠키를 통해 조회수 중복 방지
- 게시글 번호를 이용하여 DB에서 select
- Access Token이 존재하는 경우, 사용자의 Id를 통해 해당 게시글이 관심 게시글인지 판단
- 댓글 조회 기능
- 해당 게시글 댓글들 가져오기
- 댓글들 중에서 내 댓글인지 확인 및 삭제된 댓글인지 확인
게시글 관리
- 구현 기능
- 게시글 등록 , 수정 , 삭제 및 모집 여부 변경 기능
- 구현 방법
- 게시글 등록
- 게시글 등록 정보를 받아, DB에 게시글 등록
- 게시글 수정
- 수정할 카테고리 및 제목, 내용에 대한 정보를 받아 존재하는 게시글인지 판단 후, DB 수정
- 게시글 삭제
- 댓글 또는 관심글이 있는 게시글일 경우, DB에서 삭제 불가
- 댓글 또는 관심글이 없는 게시글일 경우, DB에서 삭제 가능
- 모집 여부 수정
- 모집 구분( 모집중, 모집완료 )
- 수정할 모집 구분에 대한 정보를 제공 받아, 게시글이 존재하는지 검사 후 수정
- 게시글 등록
관심 게시글 및 내가 작성한 게시글 조회
-
구현 기능
- 게시글 등록 , 수정 , 삭제 및 모집 여부 변경 기능
- 관심 게시글 조회, 등록, 삭제 기능 및 내가 작성한 게시글 조회
- 관심 게시글 조회 및 내가 작성한 게시글 조회
- 카테고리는 기타, CS, 전체, 코테, 프로젝트 조회
- 조회 순서는 최신순, 인기순으로 조회
-
구현 방법
- 관심 게시글 조회 및 내가 작성한 게시글 조회
- 기본 정렬은 카테고리는 전체, 조회 순서는 최신순, 모집 여부는모집중, 모집완료로 조회
- 모집 여부, 카테고리, 주문 순서에 대한 정보를 받고, Access Token을 통해 현재 사용자 정보에 대해 제공 받아 Querydsl의
PageableExecutionUtils이용하여 페이징 처리 - null값을 이용하여 동적 쿼리를 이용하여 게시글 조회
- 서브 쿼리를 이용하여 댓글 수 조회
- board와 join하여 조회수 조회
- 10개씩 게시글 조회되며, 크기 조절 가능
- 관심 게시글 조회 및 내가 작성한 게시글 조회
사용자 정보 조회 및 수정 기능
- 구현 기능
- 사용자 정보 조회 및 수정 기능
- 구현 방법
- 사용자 정보 조회
- Access Token을 통해 현재 사용자가 있는지 검사 후, 정보 조회
- 사용자 정보 수정
- 사용자 정보 수정 관련 데이터를 받아 사용자가 있는지 검사 후, 사용자 정보 수정
- 사용자 정보 조회
댓글 관리
- 구현 기능
- 댓글 등록, 수정, 삭제 기능
- 구현 방법
- 댓글 등록
- 게시글 번호와 부모 댓글 번호, 댓글 내용에 대한 정보를 받는다.
- 부모 댓글이 null이 아닌 경우, 대댓글로 작성되어 DB에 Insert한다.
- 댓글 수정
- 댓글 번호와 내용에 대한 정보를 받아 해당 댓글을 DB에 Update한다.
- 댓글 삭제
- 선택한 해당 댓글 번호에 대한 정보를 받아 해당 댓글과 부모 댓글을 fetch join을 이용하여 한꺼번에 가져온다.
- 해당 댓글에 대댓글이 있는 상태라면, 해당 댓글을 삭제 여부 컬럼에서 TURE로 DB에 Update한다
- 해당 댓글에 대댓글이 없다면, 부모 댓글 DB에서 삭제한다.
- orphanRemoval = true 로 부모 댓글이 삭제되면 해당 댓글도 삭제된다.
- 댓글 등록
사용자 전체 게시글 조회 기능
- 구현 기능
- 사용자 전체 게시글 조회 기능
- 모집 여부는 모집중, 모집완료 및 둘 다(모집중, 모집완료) 로 조회 가능
- 카테고리는 기타, CS, 전체, 코테, 프로젝트로 조회 가능
- 조회 순서는 최신순, 인기순으로 조회 가능
- 사용자 전체 게시글 조회 기능
- 구현 방법
- 전체 게시글 조회 기능
- 기본 정렬은 카테고리는 전체, 조회 순서는 최신순, 모집 여부는모집중, 모집완료 모두 조회
- 모집 여부, 카테고리, 주문 순서에 대한 정보를 받고 Querydsl의
PageableExecutionUtils이용하여 페이징 처리 - null값을 이용하여 동적 쿼리를 이용하여 게시글 조회
- 서브 쿼리를 이용하여 댓글 수 조회
- board와 join을 조회수 조회
- 10개 씩 게시글 조회되며, 크기 조절 가능
- 전체 게시글 조회 기능
사용자 게시글 삭제 기능
- 구현 기능
- 관리자가 사용자 게시글 삭제하는 기능
- 구현 방법
- 해당 게시글 번호에 대한 정보를 제공 받아 게시글이 있는지 판단한다.
- 해당 게시글을 삭제여부커럼에 True라고 DB에 Update
- 게시글의 제목을 “관리자로 의해 게시글 삭제” 로 DB에 Update
- 게시글 내용을 “관리자로 의해 게시글 삭제되었습니다.”로 DB에 Update
회원 정보 조회 기능
- 구현 기능
- 회원 정보 전체 조회 및 특정 문자열에 시작하는 모든 회원 정보 제공
- 구현 방법
- Querydsl의 동적 쿼리를 null값을 이용하여 회원 정체를 제공 받거나 startsWith()를 이용하여 특정 문자열에 시작되는 사용자 정보 조회
| Backend | Frontend |
|---|---|
| 전유진 | 원종대 |

















