[오르미 4기 Final 프로젝트]
- 1. 프로젝트 소개
- 2. 프로젝트 목표
- 3. 프로젝트 진행기간
- 4. 배포 주소
- 5. 개발 인원 및 역할
- 6. 배포 아키텍쳐
- 7. 사용 기술
- 8. 개발 일정
- 9. 플로우차트
- 10. 데이터베이스 모델링
- 11. 요구사항 및 기능명세
- 12. API 명세서
- 13. 화면설계서
- 14. 프로젝트 구조
너나들이란,
"서로 너니 나니 하고 부르며 허물없이 말을 건네거나 그런 사이"를 나타내는 순우리말 입니다.
우리 너나들이는 대한민국 곳곳의 정겨운 관광지들을 소개하고, 여행하는 즐거움을 함께 나눌 수 있는 서비스입니다.
- 국내 관광지 정보에 대한 지역별 상세 제공
- 동행 그룹을 모집하여 관광지를 함께 여행할 수 있는 매칭 시스템 제공
- 여행 후기에 대한 커뮤니티 게시판 제공
- 2024-04-24 ~ 2024-05-15
http://43.202.116.45:8080/neonaduri
김의찬 | 임성현 | 최재원 | 이하영 | 지윤호 |
---|---|---|---|---|
🔗 김의찬 | 🔗 임성현 | 🔗 최재원 | 🔗 이하영 | 🔗 지윤호 |
‣ 메인페이지 기능 구현 ‣ 여기갈까?(관광지 게시글) 페이지 기능 구현 ‣후기볼까?(리뷰 게시글) 페이지 기능 구현 ‣ 관심목록 페이지 기능 구현 |
‣공공데이터 API 크롤러 구현 ‣ Alan-SSE API구현 ‣검색 기능 구현 ‣실시간 인기 검색어 기능 구현 ‣댓글 API 구현 ‣관광지 상세 페이지 구현 ‣Email API 구현 ‣프로젝트 배포 |
‣ S3 사용 이미지 관련 기능 구현 ‣ 게시물 관련 기능 구현 ‣ 퍼블리싱 구현 ‣ Security 구현 |
‣ 마이페이지 기능 구현 ‣ 나의 매칭 페이지 기능 구현 ‣ 로그인 페이지 기능 구현 |
‣ 같이갈까?(동행 게시글) 페이지 디자인 구현 ‣ 후기볼까?(후기 게시글 리스트 및 생성) 페이지 디자인 구현 |
- Kakao map API
- Alan AI API
- Google login API
- Tour API - 한국관광공사
- Gmail API
- redis
🔗 API 명세서 노션 링크 : https://www.notion.so/oreumi/API-7bf6e85aa7714842a027135790e3f4b9
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/bookers/{comId}' | POST | 동행 게시글 예약 | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/companions' | POST | 동행 게시글 등록 | ✅ | ✅ | |
'//api/posts/companions/{userId}/{postId}' | PUT | 동행 게시글 수정 | ✅ | ✅ | |
'/api/companions/{comId}/bookers' | PUT | 동행 게시글 예약 이후 페이지 수정 | ✅ | ✅ | |
'/api/companions/{comId}/wishlist' | PUT | 동행 게시글 찜 이후 페이지 수정 | ✅ | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/posts' | GET | 게시글 전체 리스트 조회 | ✅ | ||
'/api/posts/{areaCode}' | GET | 게시글 지역별 리스트 조회 | ✅ | ||
'/api/posts' | POST | 게시글 등록 | ✅ | ||
'/api/posts/{id}' | DELETE | 게시글 삭제 | ✅ | ✅ | |
'/api/posts/}id}' | PUT | 게시글 수정 | ✅ | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'api/posts/reply/{postId}' | GET | 게시물에 해당하는 댓글 리스트 조회 | ✅ | ||
'api/posts/{postId}' | POST | 댓글 생성 | ✅ | ||
'/api/posts/{postId}/{replyId}/{userId}' | PUT | 댓글 수정 | ✅ | ✅ | |
'/api/posts/{replyId}/{userId}' | DELETE | 댓글 삭제 | ✅ | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/alan/{spotName}' | GET | 앨런 응답 SSE | ✅ | ||
'/api/spots/code/{areaCode}' | GET | 지역코드 기반 관광지 조회 | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/userDetails/{userId}' | PUT | 사용자 세부정보 수정 | ✅ | ✅ | |
'/api/userDetails/{userId}' | GET | 사용자 세부정보 조회 | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/users' | POST | 사용자 정보 생성 | ✅ | ||
'/api/users/{userId}' | PUT | 사용자 정보 수정 | ✅ | ✅ | |
'/api/users/{userId}' | GET | 사용자 정보 조회 | ✅ | ||
'/register' | POST | 사용자 세부정보 생성 | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/api/wishlist/{admin_id}' | GET | 사용자 관심목록 조회 | ✅ | ||
'/api/wishlist/{postId}' | POST | 사용자 관심목록 추가 | ✅ |
URL | HTTP Method | 설명 | 로그인 권한 필요 | 작성자 권한 필요 | Admin 권한 |
---|---|---|---|---|---|
'/companions' | GET | 동행 게시글페이지 조회 | ✅ | ||
'/companions/{areaCode}' | GET | 지역 별 동행 게시글 조회 | ✅ | ||
'/companions/id/{comId}' | GET | 동행 게시글 상세 조회 | ✅ | ||
'/uploadComapnion' | POST | 동행 게시글 작성 | ✅ | ||
'/uploadCompanion/{postId}' | GET | 관광지 정보를 통한 동행 게시글 작성 | ✅ | ||
'/reviews' | GET | 리뷰 전체 리스트 조회 | ✅ | ||
'/reviews/{areaCode}' | GET | 지역별 리뷰 게시글 조회 | ✅ | ||
'/reviews/id/{postId}' | GET | 리뷰 상세페이지 조회 | ✅ | ||
'/uploadReview' | GET | 리뷰 게시글 업로드 폼 조회 | ✅ | ||
'/spots' | GET | 관광지 전체 리스트 조회 | ✅ | ||
'/spots/id/{postId}' | GET | 관광지 상세페이지 조회 | ✅ | ||
'/spots/{areaCode}}' | GET | 관광지 지역별 리스트 조회 | ✅ |
└───📁src
├──📁main
│ ├───📁java
│ │ └───📁com
│ │ └───📁est
│ │ └───📁neonaduri
│ │ │ 📄NeonaduriApplication.java
│ │ │
│ │ ├───📁domain
│ │ │ ├───📁bookers
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄BookersController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄Bookers.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄BookersRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄BookersService.java
│ │ │ │
│ │ │ ├───📁companions
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄CompanionsController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄Companions.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄AddCompanionsRequest.java
│ │ │ │ │ 📄CompanionsDTO.java
│ │ │ │ │ 📄CompanionsListDTO.java
│ │ │ │ │ 📄CompanionsResponseDTO.java
│ │ │ │ │ 📄CompanionsWriteDTO.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄CompanionsRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄CompanionsService.java
│ │ │ │
│ │ │ ├───📁postImages
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄PostImages.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄PostImagesRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄PostImagesService.java
│ │ │ │
│ │ │ ├───📁posts
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄PostsController.java
│ │ │ │ │ 📄SearchController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄Posts.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄AddPostRequest.java
│ │ │ │ │ 📄CreatePostDTO.java
│ │ │ │ │ 📄PostSearchCondition.java
│ │ │ │ │ 📄PostsListDTO.java
│ │ │ │ │ 📄PostsResponseDTO.java
│ │ │ │ │ 📄PostViewResponse.java
│ │ │ │ │ 📄PostWriteDTO.java
│ │ │ │ │ 📄UpdatePostDTO.java
│ │ │ │ │ 📄UpdatePostRequest.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄PostsCustomRepository.java
│ │ │ │ │ 📄PostsRepository.java
│ │ │ │ │ 📄PostsRepositoryImpl.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄PostsService.java
│ │ │ │ 📄SearchService.java
│ │ │ │
│ │ │ ├───📁replies
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄RepliesController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄Replies.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄ReplyRequestDto.java
│ │ │ │ │ 📄ReplyResponseDto.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄RepliesRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄RepliesService.java
│ │ │ │
│ │ │ ├───📁spots
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄SpotsController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄Spots.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄SpotNameDTO.java
│ │ │ │ │ 📄SpotPageDto.java
│ │ │ │ │ 📄SpotsListDTO.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄SpotsRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄SpotsService.java
│ │ │ │
│ │ │ ├───📁userDetails
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄UserDetailsController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄UserDetails.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄UserDetailsRequestDto.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄UserDetailsRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄UserDetailsService.java
│ │ │ │
│ │ │ ├───📁users
│ │ │ │ ├───📁controller
│ │ │ │ │ 📄ProfileUploadController.java
│ │ │ │ │ 📄UserController.java
│ │ │ │ │
│ │ │ │ ├───📁domain
│ │ │ │ │ 📄Users.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄UserDTO.java
│ │ │ │ │
│ │ │ │ ├───📁repository
│ │ │ │ │ 📄UserRepository.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄UserService.java
│ │ │ │
│ │ │ └───📁wishlist
│ │ │ ├───📁controller
│ │ │ │ 📄WishListController.java
│ │ │ │
│ │ │ ├───📁domain
│ │ │ │ 📄Wishlist.java
│ │ │ │
│ │ │ ├───📁repository
│ │ │ │ 📄WishListRepository.java
│ │ │ │
│ │ │ └───📁service
│ │ │ 📄WishListService.java
│ │ │
│ │ └───📁global
│ │ ├───📁config
│ │ │ 📄BaseTimeEntity.java
│ │ │ 📄ImageFileConfig.java
│ │ │ 📄S3Config.java
│ │ │
│ │ ├───📁infra
│ │ │ ├───📁alanapi
│ │ │ │ │ 📄AlanController.java
│ │ │ │ │
│ │ │ │ ├───📁config
│ │ │ │ │ 📄ApiConst.java
│ │ │ │ │ 📄AppConfig.java
│ │ │ │ │
│ │ │ │ ├───📁dto
│ │ │ │ │ 📄AlanApiSseDto.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄AlanService.java
│ │ │ │
│ │ │ ├───📁emailapi
│ │ │ │ ├───📁config
│ │ │ │ │ 📄EmailConfig.java
│ │ │ │ │
│ │ │ │ └───📁service
│ │ │ │ 📄EmailApi.java
│ │ │ │
│ │ │ ├───📁redis
│ │ │ │ │ 📄TempController.java
│ │ │ │ │
│ │ │ │ ├───📁config
│ │ │ │ │ 📄RedisConfig.java
│ │ │ │ │
│ │ │ │ └───📁dto
│ │ │ │ 📄SearchRankResponseDto.java
│ │ │ │
│ │ │ └───📁tourapi
│ │ │ ├───📁config
│ │ │ │ 📄ApiConst.java
│ │ │ │ 📄AreaCode.java
│ │ │ │ 📄ContentCode.java
│ │ │ │
│ │ │ ├───📁dto
│ │ │ │ 📄TourApiDto.java
│ │ │ │
│ │ │ └───📁service
│ │ │ 📄ApiManager.java
│ │ │ 📄TourApiCrawler.java
│ │ │
│ │ ├───📁utils
│ │ │ IdGenerator.java
│ │ │
│ │ └───📁view
│ │ 📄CompanionPageController.java
│ │ 📄mainPageController.java
│ │ 📄ReviewPageController.java
│ │ 📄SpotPageController.java
│ │
│ └───📁resources
│ │ 📄application.properties
│ │ 📄config.properties
│ │ 📄data.sql
│ │
│ ├───📁static
│ │ ├───📁css
│ │ │ 📄companions.css
│ │ │ 📄companionsDetail.css
│ │ │ 📄header.css
│ │ │ 📄here.css
│ │ │ 📄login.css
│ │ │ 📄main.css
│ │ │ 📄my-matching.css
│ │ │ 📄mypage.css
│ │ │ 📄post-spot-page.css
│ │ │ 📄reviewdetail.css
│ │ │ 📄reviewList.css
│ │ │ 📄search-result.css
│ │ │ 📄uploadCompanion.css
│ │ │ 📄uploadReview.css
│ │ │ 📄wishlist.css
│ │ │
│ │ ├───📁images
│ │ │
│ │ └───📁js
│ │ 📄alan.js
│ │ 📄companions.js
│ │ 📄companionsDetail.js
│ │ 📄here.js
│ │ 📄login.js
│ │ 📄main.js
│ │ 📄map.js
│ │ 📄myMatching.js
│ │ 📄mypage.js
│ │ 📄page.js
│ │ 📄post-spot-page.js
│ │ 📄posts.js
│ │ 📄review.js
│ │ 📄reviewList.js
│ │ 📄uploadCompanion.js
│ │ 📄uploadReview.js
│ │ 📄wishlist.js
│ │
│ └───📁templates
│ 📄companions.html
│ 📄companionsDetail.html
│ 📄footer.html
│ 📄header.html
│ 📄here.html
│ 📄login.html
│ 📄main.html
│ 📄myMatching.html
│ 📄mypage.html
│ 📄newReview.html
│ 📄post-spot-page.html
│ 📄review.html
│ 📄reviewList.html
│ 📄search-result.html
│ 📄uploadCompanion.html
│ 📄uploadReview.html
│ 📄wishlist.html
│
└───📁test
└───📁java
└───📁com
└───📁est
└───📁neonaduri
📄NeonaduriApplicationTests.java