- 멋쟁이 사자처럼 백엔드 스쿨 2기에서 배웠던 내용을 토대로 팀 프로젝트 진행
- 공통의 버킷리스트를 주제로 멤버를 모집하고 참여, 후기를 작성하는 Bucketlist 사이트 구현
역할 | 이름 |
---|---|
PM | 최수정 |
CTO | 정재현 |
Developer | 고관운 |
Server Developer | 박은빈 |
PD | 배지원 |
Developer | 변지환 |
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework:spring-messaging:6.0.3'
implementation group: 'org.springframework.security', name: 'spring-security-messaging', version: '6.0.1'
compileOnly 'org.projectlombok:lombok:1.18.20'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.security:spring-security-test'
// swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
//SNS로그인을 위한 의존성
implementation 'io.jsonwebtoken:jjwt:0.9.1'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:3.0.1'
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
//== 이메일 인증을 위한 의존성 시작 ==//
implementation 'org.springframework.boot:spring-boot-starter-mail:3.0.1'
//== 이메일 인증을 위한 의존성 끝 ==//
//chat 관련 의존성
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation group: 'com.google.code.gson', name: 'gson', version: '2.10'
implementation 'org.webjars:sockjs-client:1.5.1'
implementation 'org.webjars:stomp-websocket:2.3.4'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.14.1'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.0.1'
//querydsl(스프링 부트 3.0 이상)
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// test에서 사용할 springframework 라이브러리 의존시킴
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompileOnly 'org.projectlombok:lombok:1.18.20' // 테스트 의존성 추가
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20' // 테스트 의존성 추가
// 캐싱 사용하기 위한 의존성
implementation 'org.springframework.boot:spring-boot-starter-cache'
// Image 추가를 위한 스프링 클라우드 의존성 추가
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
// 정적 파일 빌드 안하고 바로 반영할 수 있는 기능 추가
implementation 'org.springframework.boot:spring-boot-devtools:3.0.2'
}
도메인 | 에러코드 | 설명 |
---|---|---|
공통 | DUPLICATED_EMAIL | 중복됩니다. |
DUPLICATED_USERNAME | userName이 중복됩니다. | |
DUPLICATED_ALARM | 알람이 중복됩니다. | |
INCORRECT_PASSWORD_CORRECT | Email이 중복됩니다. | |
INVALID_PASSWORD | 패스워드가 잘못되었습니다. | |
USERNAME_NOT_FOUNDED | 해당 사용자는 없습니다. | |
INVALID_PERMISSION | 사용자가 권한이 없습니다. | |
DATABASE_ERROR | DB에러 | |
ALARM_NOT_FOUND | 해당 알람이 없습니다. | |
포스트 | POST_NOT_FOUND | 해당 포스트가 없습니다. |
DUPLICATED_LIKE | 같은 글에 좋아요를 두 번 눌렀습니다. | |
APPLICATION_NOT_FOUND | 해당 신청서가 없습니다. | |
EXCEED_ENTRANT_NUM | 참가자 수를 초과하였습니다. | |
로그인 | INVALID_TOKEN | 잘못된 토큰입니다. |
REFRESH_TOKEN_NOT_FOUNDED | 해당 사용자에 대한 리프레시 토큰이 없습니다. | |
INVALID_REFRESH_TOKEN | refresh token 만료 | |
파일 | FILE_NOT_EXISTS | 빈 파일입니다. |
FILE_UPLOAD_ERROR | 파일 업로드에 실패했습니다. | |
WRONG_FILE_FORMAT | 파일 형식이 틀립니다. | |
댓글 | COMMENT_NOT_FOUND | 해당 댓글이 없습니다. |
프로필 | PROFILE_NOT_FOUND | 해당 프로필이 없습니다. |
리뷰 | REVIEW_NOT_FOUND | 해당 리뷰가 없습니다. |
채팅 | CHAT_ROOM_NOT_FOUND | 채팅방을 찾을 수 없습니다. |
- 게시글
- 전체 게시글, 카테고리별 게시글 확인 가능
- 폼을 통해 버킷리스트를 작성하고 날짜, 지도(카카오맵 API), 이미지 추가
- 버킷리스트 게시글에서 댓글과 대댓글, 참가 신청, 좋아요 기능
- 호스트는 참가 신청서를 보고 참가자를 선택
- 참가 인원이 달성되거나 모집기간이 만료되면 해당 게시글에 참여 신청이 마감(중복 신청 방지)
- 버킷리스트 이행이 완료되면 참가자와 버킷리스트에 대한 평점을 작성
- 버킷리스트 리뷰 출력
- 포스트 업로드 사진 용량 제한
- 채팅방
- 그룹 채팅
- 채팅에 jwt인증, 에러핸들링
- 게시글 작성시 채팅방 자동 생성
- 버킷리스트 신청서가 수락될 경우 채팅방에 자동 초대
- 채팅방 나가기, 호스트의 팀원 강퇴 기능
- 마이피드
- 본인만 확인 가능
- 작성, 좋아요, 신청, 승낙, 완료한 버킷리스트가 출력
- 프로필
- 본인 외 로그인하지 않은 사용자까지 확인 가능
- 프로필 사진, 이메일, 평점, 리뷰가 출력
- 프로필 사진은 본인 프로필인 경우만 수정 가능
- 프로필 업로드 사진 용량 제한
- 프로필 주인의 평점과 리뷰를 확인
- 회원가입, 로그인
- Email 인증
- 네이버, 구글 API를 사용한 로그인
- 일반, sns회원 중복 회원가입 방지
- 알람
- 신규 댓글, 버킷리스트 참가 신청, 좋아요, 리뷰 실시간 알림
- 모두 읽음 처리
- 검색/필터링
- 검색 기능
- 일정, 가격 필터링 기능
- 테스트 코드
- 컨트롤러 테스트
-
홈
- 홈 화면으로 이동하는 로고, 채팅방 회원가입, 로그인, 검색 기능이 포함된 헤더와 푸터
- 회원가입, 로그인 모달
- 홈화면 카테고리
-
버킷리스트
- 날짜, 가격 별로 필터링
-
포스트
- 폼을 통한 게시글 작성
- 제목, 일자, 위치 등 버킷리스트 정보, 지도, 사진
- 버킷리스트 참가 신청, 댓글 작성
-
채팅
- 버킷리스트 호스트와 참여자에게 자동 생성되는 채팅방
-
알람
- 로그인하면 댓글, 게시물 상태에 따른 알림 확인 가능
-
마이피드
- 작성한, 좋아요한, 신청한, 승낙받은, 완료한 버킷리스트 확인
신청한 버킷리스트 클릭한 모습
-
마이페이지
- 프로필 사진, 유저 이름, 유저 이메일, 평점, 리뷰 출력
🔗 1주차 위클리
🔗 2주차 위클리
🔗 3주차 위클리
🔗 4주차 위클리
🔗 5주차 위클리