카페 정보 제공 소셜네트워크 기반 커뮤니티 웹사이트
- 국내 1인당 연간 커피 소비량은 405잔(세계 1인당 소비량은 152잔)
- 브랜드 선호도는 카페의 맛이 대부분의 선택 기준
🤔카페 정보 공유와 함께 소통의 장을 연다면 보다 다양하고 넓은 카페 문화가 형성되지 않을까?
🙄SNS처럼 내 생각을 편하게 이야기하고 평가할 수 있는 공간이 있으면 좋지 않을까?
카페 평가 기능과, 팔로우, 북마크 기능을 활용하여 개인 맞춤 카페 추천을 해주는 SNS 웹사이트입니다.
Java | Spring | Spring Boot | PostgreSQL | AWS |
---|---|---|---|---|
Html | CSS | JavaScript | Figma |
---|---|---|---|
Github | Discord | Notion | Jira |
---|---|---|---|
- 회원가입
기능 | 설명 |
---|---|
회원가입 | 이메일 인증을 통한 회원 가입 (가입 시 이메일로 임의의 번호를 보내 확인한다) |
필수 입력 : [이메일], [이름], [닉네임], [비밀번호], [비밀번호 확인], [성별], [연락처], [생년월일] | |
이메일, 닉네임 중복 확인 | 아이디 닉네임 [중복 확인] 버튼 클릭 시 확인 할 수 있다. |
- 로그인
기능 | 설명 |
---|---|
계정 로그인 | [이메일], [비밀번호]를 입력하여 로그인 |
소셜 로그인 | Oauth2를 사용한 소셜 로그인(google,naver) |
비밀번호 찾기 | 비밀번호 찾기 요청 시 임의의 값으로 비밀번호를 초기화 하고, 해당 값을 이메일로 전송 |
- 회원 정보
기능 | 설명 |
---|---|
마이 페이지 | 로그인 상태에서 [마이페이지] 클릭 시 마이페이지로 이동 |
회원 정보 변경 | 마이 페이지에서 [메뉴] 버튼 클릭 시 [회원 정보 수정] 클릭 시 회원 정보 수정 페이지로 이동 |
변경 가능 : [비밀번호], [닉네임] | |
작성 글 확인 | 마이페이지에서 [메뉴] ⇒ [내가 쓴 글 보기] 클릭 시 내가 작성한 글을 확인할 수 있다. |
팔로워, 팔로잉 목록 | 마이페이지에서 [메뉴] ⇒ [팔로워], [팔로잉] 클릭 시 해당 회원을 확인할 수 있다. |
차단한 회원 목록 | 마이페이지에서 [메뉴] ⇒ [차단한 회원] 클릭 시 해당 회원을 확인할 수 있다. |
장바구니 목록 | 마이페이지에서 [메뉴] ⇒ [장바구니] 클릭 시 해당 제품을 확인할 수 있다. |
- 공통
기능 | 설명 |
---|---|
열람 | 비회원은 카페정보와 댓글을 볼 수 있으나, 피드는 볼 수 없다. |
- 공통
기능 | 설명 |
---|---|
열람 | 회원은 카페 정보와 댓글과 피드를 모두 볼 수 있다. |
- 신규 장소 등록
기능 | 설명 |
---|---|
신규 장소 등록 신청 | 회원은 [장소 등록] 버튼 클릭 시 [카페명],[주소],[연락처]을 작성하고, [신청하기] 버튼을 클릭하여 신청할 수 있다. |
- 신고
기능 | 설명 |
---|---|
피드 및 댓글 신고 | 회원은 피드와 댓글의 우측 하단에 있는 [신고] 버튼을 클릭하여 신고할 수 있다. |
- 인증 회원
기능 | 설명 |
---|---|
인증 회원 | 특정 팔로잉 수와 리뷰 수, 리뷰 추천 수를 충족하면 자동으로 인증회원으로 분류된다. |
- 차단
기능 | 설명 |
---|---|
회원 차단 | 피드나 댓글의 회원 사진을 클릭 후 [차단] 버튼을 클릭하면 해당 회원은 차단 목록에 들어가게 된다. |
- 팔로우
기능 | 설명 |
---|---|
팔로우 | 다른 유저의 프로필에서 [팔로우] 버튼을 클릭하여 팔로우할 수 있다. |
언팔로우 | 팔로우한 유저의 프로필에서 [언팔로우] 버튼을 클릭하여 언팔로우할 수 있다. |
- 판매자 신청
기능 | 설명 |
---|---|
판매자 신청 | [사업자등록번호], [사업자명] 을 입력하고 신청할 수 있다. |
💡 인증 회원은 회원 마크 우측 하단에 특정 마크를 추가하여 인증 회원을 구분할 수 있도록 한다.
- 카페 정보
기능 | 설명 |
---|---|
카페 정보 페이지 | 판매자는 마이페이지에서 [카페 정보] 페이지를 들어갈 수 있다. |
카페 정보 수정 | 판매자는 카페 정보 페이지에서 [수정] 버튼을 클릭하면 수정 페이지로 이동하고 [등록] 버튼을 클릭하여 메뉴를 추가할 수 있다. |
필수 정보 : [카페명], [주소], [영업시간], [사진] | |
선택 정보 : [좌석수] |
- 메뉴 정보
기능 | 설명 |
---|---|
메뉴 정보 페이지 | 판매자는 마이페이지에서 [메뉴 정보] 페이지를 들어갈 수 있다. |
메뉴 추가 | 판매자는 메뉴 정보 페이지에서 [추가] 버튼을 클릭하면 추가 페이지로 이동하고 [등록] 버튼을 클릭하여 메뉴를 추가할 수 있다. |
필수 정보 : [메뉴명], [가격], [용량], [판매유형(상시, 기간한정)] | |
선택 정보 : [사진], [재료], [산미], [당도] | |
메뉴 수정 및 삭제 | 판매자는 메뉴 정보 페이지에서 [수정] 및 [삭제] 버튼을 클릭하여 해당 메뉴를 수정 및 삭제할 수 있다. |
이커머스 기능은 고려하여 설계하되, 초기 구현에는 추가하지 않기로
- 카페 조회
기능 | 설명 |
---|---|
카페 목록 | 카페 목록([카페명],[주소],[연락처],[사진], [평균점수])을 보여줍니다. |
카페 검색 | 카페의 정보를 검색어로 하여 해당하는 카페를 조회(위치, 영업시간, 평점 등) |
- 카페 정보
기능 | 설명 |
---|---|
북마크 | 카페 정보를 북마크할 수 있다. |
카페 상세조회 | 카페의 상세정보([카페명], [주소], [연락처],[영업시간],[리뷰 목록],[메뉴 목록]) 조회합니다. |
- 북마크
기능 | 설명 |
---|---|
즐겨찾기 | 카페의 [🏷] 클릭 시 카페 즐겨찾기할 수 있다. |
북마크 해제 | 카페의 [🏷] 클릭 시 카페 즐겨찾기 해제할 수 있다. |
- 리뷰 게시판
기능 | 설명 |
---|---|
게시글 목록 | 게시글 목록을 팔로잉 게시물 우선 추천과 추천 점수가 높은 피드를 우선으로 보여준다. |
- 피드
기능 | 설명 |
---|---|
피드 보기 | 회원은 인증 회원과 관련 없이 카페정보와 피드, 댓글을 볼 수 있다. |
피드 작성 | 회원은 [작성] 버튼 클릭 시 피드를 작성할 수 있다. |
필수정보: 사진, 리뷰글 | |
선택정보: 시설(화장실이 청결해요,매장이 넓어요,,등등), 분위기(분위기가 좋아요,…등등), 맛(커피가 맛있어요, 디저트가 맛있어요,… 등등) 이 중 최대 3개 고를 수 있다. | |
피드 수정 | 회원은 [수정] 버튼 클릭 시 피드를 수정할 수 있다. |
피드 삭제 | 회원은 [삭제] 버튼 클릭 시 피드를 삭제할 수 있다. |
- 댓글
기능 | 설명 |
---|---|
댓글 보기 | 피드의 [댓글] 클릭 시 피드에 댓글을 확인할 수 있다. |
댓글 작성 | 회원은 [작성] 버튼 클릭 시 댓글을 작성할 수 있다. |
댓글 수정 | 회원은 [수정] 버튼 클릭 시 댓글을 수정할 수 있다. |
댓글 삭제 | 회원은 [삭제] 버튼 클릭 시 댓글을 삭제할 수 있다. |
- 추천
기능 | 설명 |
---|---|
피드 추천 | 피드의 [♡] 클릭 시 피드를 추천할 수 있다. |
피드 추천 해제 | 피드의 [♥] 클릭 시 피드를 추천 해제할 수 있다. |
댓글 추천 | 댓글의 [♡] 클릭 시 댓글을 추천할 수 있다. |
댓글 추천 해제 | 댓글의 [♥] 클릭 시 댓글을 추천할 해제할 수 있다. |
- 메인화면 피드
기능 | 설명 |
---|---|
메인화면 피드 생성 | 팔로우한 회원의 피드 5개와, 추천 점수가 높은 피드를 랜덤으로 출력한다. |
- 검색
기능 | 설명 |
---|---|
카페 검색 | [주소], [분위기], [이름] 을 검색하여 카페를 찾을 수 있다. |
메뉴 검색 | [메뉴명]을 검색하여 카페를 찾을 수 있다. |
- 분류
기능 | 설명 |
---|---|
최근 평점 높은 순 | 최근 평점이 높은 순으로 정렬하여 피드를 출력한다. |
최근 게시물 순 | 최근 게시물 순으로 정렬하여 피드를 출력한다. |
- 지점별 카페 요약
기능 | 설명 |
---|---|
카페 리뷰 요약 | “[카페명]에 대한 리뷰를 3줄로 요약해줘.”을 요청하여 카페 정보의 리뷰 요약을 해준다. |
- 추천
기능 | 설명 |
---|---|
카페 추천 | [인원수], [목적], [위치], [평점]에 따른 추천을 한다. |
메뉴 추천 | [시그니처 메뉴], [평점]에 따른 추천을 한다. |
- 공통
기능 | 설명 |
---|---|
관리자 페이지 이동 | 관리자로 로그인 시 우측 상단에 [관리자 페이지 이동] 버튼을 통해 관리자 페이지로 이동할 수 있다. |
- 카페 정보
기능 | 설명 |
---|---|
카페 정보 추가 | 관리자 페이지에서 카페 정보([카페명], [주소], [연락처], [영업시간])를 입력 후 [생성] 버튼을 클릭하여 추가할 수 있다. |
- 회원
기능 | 설명 |
---|---|
회원 검색 | 회원 관리 탭에서 회원 [이메일] 을 입력하면 회원을 검색할 수 있다. |
회원 관리 | 등록된 회원의 [정지] 버튼 클릭 시 회원 테이블의 탈퇴가 true로 변경된다. |
단, 탈퇴 된 회원은 [정지 해제] 로 나타난다. |
- 추가 요망 : [일시 정지] 클릭 시 input 박스가 나타나며, 날짜 입력 시 해당 일시 동안 일시 정지된다. (이 후 해당 일자가 지나면 자동으로 해제) | | 인증 회원 관리 | [인증 회원 보기] 클릭 시 인증회원 목록을 확인할 수 있다. |
- 피드
기능 | 설명 |
---|---|
피드 검색 | 게시글 관리 탭에서 [게시글]을 입력하면 게시글 목록을 검색할 수 있다. |
피드 관리 | 업로드 된 게시글의 [삭제] 버튼 클릭 시 게시글이 삭제된다.(반드시 삭제 여부를 확인한다) |
[숨기기] 버튼 클릭 시 게시글 테이블의 [가시여부]가 false로 변경된다. |
- 신고
기능 | 설명 |
---|---|
신고 검색 | [게시글] 또는 [신고자]를 입력하면 해당 목록을 검색할 수 있다. |
신고 관리 | 신고된 게시글의 [승인] 버튼 클릭 시 [게시글 가시 여부]가 false로 변경된다. |
- 신규 장소 등록 목록
기능 | 설명 |
---|---|
신규 장소 등록 검색 | 회원이 신청한 신규 장소 등록의 대한 정보를 검색할 수 있다. |
신규 장소 관리 | 등록된 정보의 [승인] 버튼 클릭 시 신규 장소 테이블에서 카페 정보 테이블의 정보로 저장한다. |
- 판매자 신청 목록
기능 | 설명 |
---|---|
판매자 신청 검색 | 회원이 신청한 판매자 인증 신청을 검색할 수 있다. |
판매자 신청 관리 | 등록된 정보의 [승인] 버튼 클릭 시 회원 테이블의 [판매자정보] 칼럼에 [카페 id]를 입력한다. |
- 공통
기능 | 설명 |
---|---|
알림 확인 | 모든 회원은 [알림] 버튼 클릭 시 알림을 확인할 수 있다. |
- 판매자
기능 | 설명 |
---|---|
알림 전송 | 판매자는 즐겨찾기한 회원에 한해 [메시지], [URL] 을 전송할 수 있다. |
├─ 📁 .github
│ ├─ 📃 pull_request_template.md
│ └─ 📁 workflows
│ ├─ 📃 build.yml
│ └─ 📃 gradle.yml
├─ 📃 .gitignore
├─ 📃 README.md
├─ 📃 appspec.yml
├─ 📃 build.gradle
├─ 📁 gradle
│ └─ 📁 wrapper
│ ├─ 📃 gradle-wrapper.jar
│ └─ 📃 gradle-wrapper.properties
├─ 📃 gradlew
├─ 📃 gradlew.bat
├─ 📁 scripts
│ └─ 📃 deploy.sh
├─ 📃 settings.gradle
└─ 📁 src
├─ 📁 main
│ ├─ 📁 java
│ │ └─ 📁 com
│ │ └─ 📁 grinder
│ │ ├─ 📃 GrinderApplication.java
│ │ ├─ 📁 config
│ │ │ ├─ 📃 EmailConfig.java
│ │ │ ├─ 📃 RedisConfig.java
│ │ │ ├─ 📃 SchedulingConfig.java
│ │ │ ├─ 📃 SecurityConfig.java
│ │ │ └─ 📃 SwaggerConfig.java
│ │ ├─ 📁 controller
│ │ │ ├─ 📃 ExControllerAdvice.java
│ │ │ ├─ 📃 ExRestControllerAdvice.java
│ │ │ ├─ 📃 FileController.java
│ │ │ └─ 📃 TestController.java
│ │ ├─ 📁 domain
│ │ │ └─ 📁 dto
│ │ │ ├─ 📃 AlanDTO.java
│ │ │ └─ 📃 BlacklistDTO.java
│ │ ├─ 📁 entity
│ │ │ ├─ 📃 AnalysisTag.java
│ │ │ └─ 📃 BaseEntity.java
│ │ └─ 📁 repository
│ │ ├─ 📃 AnalysisTagRepository.java
│ │ └─ 📃 BlacklistRepository.java
│ └─ 📁 resources
│ ├─ 📃 application-local.properties
│ ├─ 📃 application-prod.properties
│ ├─ 📃 application-test.properties
│ └─ ✏ static
│ ├─ ✏ css
│ │ └─ ✏ MyMenuCard.css
│ ├─ ✏ img
│ │ └─ ✏ Alan.png
│ └─ ✏ js
│ └─ ✏ addMemberForm.js
└─ 📁 test
└─ 📁 java
└─ 📁 com
└─ 📁 grinder
└─ 📃 GrinderApplicationTests.java
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
updateMember | PUT | /api/member/update | 회원 정보 수정 |
updateMemberRole | PUT | /admin/api/member/{memberId}/role | 회원 역할 수정 |
recoverMember | PUT | /admin/api/member/{memberId}/recovery | 회원 복구 |
addMember | POST | /api/member/signup | 회원 가입 |
sendMessage | POST | /api/member/email/verification-requests | 이메일 인증 요청 |
resetPassword | PATCH | /api/member/email/password | 비밀번호 재설정 |
checkNickname | GET | /api/member/nickname/check | 닉네임 중복 확인 |
verificationEmail | GET | /api/member/email/verifications | 이메일 인증 |
checkEmail | GET | /api/member/email/check | 이메일 중복 확인 |
searchMemberByNicknameAndRole | GET | /admin/api/member/search | 닉네임과 역할로 회원 검색 |
deleteMember | DELETE | /admin/api/member/{memberId} | 회원 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
updateFeed | PUT | /feed/{feed_id} | 피드 수정 |
deleteFeed | DELETE | /feed/{feed_id} | 피드 삭제 |
addFeed | POST | /feed/newfeed | 새 피드 추가 |
findFeedForAdmin | GET | /admin/feed/{feed_id} | 관리자용 피드 조회 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
updateComment | PUT | /comment/{feed_id}/{comment_id} | 댓글 수정 |
deleteComment | DELETE | /comment/{feed_id}/{comment_id} | 댓글 삭제 |
addComment | POST | /comment/{feed_id}/newcomment | 새 댓글 추가 |
findCommentForAdmin | GET | /admin/comment/{comment_id} | 관리자용 댓글 조회 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
saveAlanTag | POST | /saveAlanTag | Alan 태그 저장 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
addHeart | POST | /heart | 좋아요 추가 |
deleteHeart | DELETE | /heart | 좋아요 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
saveSellerInfo | POST | /admin/api/seller_info/{applyId} | 판매자 정보 저장 |
deleteSellerInfo | DELETE | /api/seller_info/{seller_info_id} | 판매자 정보 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
saveSellerApply | POST | /api/seller_apply/{cafeId} | 판매자 신청 저장 |
findAllSellerApplies | GET | /admin/api/seller_apply | 모든 판매자 신청 조회 |
deleteSellerApply | DELETE | /admin/api/seller_apply/{applyId} | 판매자 신청 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
saveOpeningHours | POST | /api/saveOpeningHours/{cafe_id} | 영업 시간 저장 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
saveMyCafeMenu | POST | /api/menu | 카페 메뉴 저장 |
deleteMyCafeMenu | DELETE | /api/myMenu/{menu_id} | 카페 메뉴 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
saveAndDeleteImage | POST | /api/image | 이미지 저장 및 삭제 |
deleteImage | DELETE | /api/image | 이미지 삭제 |
deleteCafeImage | DELETE | /api/image/{cafeId} | 카페 이미지 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
addFollow | POST | /api/follow/{email} | 팔로우 추가 |
deleteFollow | DELETE | /api/follow/{email} | 팔로우 삭제 |
findAllFollowingSlice | GET | /api/following | 팔로잉 목록 조회 |
findAllFollowerSlice | GET | /api/follower | 팔로워 목록 조회 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
uploadImageList | POST | /api/file/upload/{contentType}/{contentId} | 이미지 목록 업로드 |
downloadFile | GET | /api/file/download | 파일 다운로드 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
addCafe | POST | /api/cafe/admin/{registerId} | 카페 추가 |
searchCafes | GET | /api/cafe/search-cafe | 카페 검색 |
searchCafeByAdmin | GET | /admin/api/cafe | 관리자용 카페 검색 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
findCafeSummary | GET | /api/cafe_summary/{cafeId} | 카페 요약 정보 조회 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
addCafeRegister | POST | /api/cafe_register/newcafe | 신규 카페 등록 작성 |
findAllCafeRegisters | GET | /admin/api/cafe_register | 모든 카페 등록 정보 조회 |
denyCafeRegister | DELETE | /admin/api/cafe_register/{registerId} | 카페 등록 거부 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
isBookmarked | GET | /api/bookmark/{cafeId} | 북마크 여부 확인 |
addBookmark | POST | /api/bookmark/{cafeId} | 북마크 추가 |
deleteBookmark | DELETE | /api/bookmark/{cafeId} | 북마크 삭제 |
findAllBookmarksSlice | GET | /api/bookmark | 북마크 목록 조회 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
findAllBlacklist | GET | /api/blacklist | 블랙리스트 조회 |
addBlacklist | POST | /api/blacklist | 블랙리스트 추가 |
deleteBlacklist | DELETE | /api/blacklist/{id} | 블랙리스트 삭제 |
🏷NAME | ⚙METHOD | 📎URL | 📖DESCRIPTION |
---|---|---|---|
searchReportByContentAndType | GET | /admin/api/report/search | 내용과 타입으로 신고 검색 |
deleteReport | DELETE | /admin/api/report/{reportId} | 신고 삭제 |
deleteContent | DELETE | /admin/api/report/{reportId}/accepted | 신고된 내용 삭제 |