카모아
(디지털컨버전스)공공데이터 융합 자바개발자 양성과정A30(29) 1회차
| 개요 | 국내 여행을 위한 호텔, 펜션, 모텔 등의 숙소 예약 기능과 장거리 여행을 위한 렌트카 예약 기능을 구현하여 실제 사용자가 자신이 가고픈 여행지와 그 곳으로 이동하기 위한 차량을 골라 예약할 수 있고, 결제 시스템을 통해 실제 예약까지 가능 하도록 구현 |
|---|---|
| 구현기능 | - 로그인 및 회원가입 ( 웹 회원가입, 로그인, 유효성 검사, 카카오, 네이버, 구글 api 활용) - 아이디 찾기(전화번호 인증, 문자 인증 api) - 비밀번호 변경(전화번호 인증, 문자 인증 api) - 자동 로그인 기능 - 메인페이지 / 헤더 / 푸터 - 지역별 숙소 조회 - 날짜 기간에 따른 숙소 조회(캘린더 활용) - 예약 인원 수에 따른 숙소 조회 - 리뷰, 예약 수에 따른 숙소 조회 - 날짜 기간에 따른 렌트카 조회(캘린더 활용) - 예약 인원 수에 따른 렌트카 조회 - 리뷰, 예약 수에 따른 렌트카 조회 - 마이페이지 구현 - 내 정보 수정(전화번호, 닉네임, 생년월일, 성별) - 웹, api 로그인 상태 확인 가능 - 사용자의 최신 예약 내역 확인(오늘 날짜 포함, 이후의 모든 예약 완료된 내역 조회 가능) - 예약 취소 기능 - 사용자의 전체 예약 내역 확인 - 사용자가 작성한 리뷰 확인 가능(분류에 따른 조회) - 메인화면 이미지 스와이프 - 검색기능(각 분류에 따른 값 산출 가능, 호텔 성급, 평점, 유형, 가격 등) - 렌트카 검색 기능 - 숙소 상세페이지, 렌트카 상세페이지 - 카카오맵 api를 이용한 지도 출력 - 지도 api를 활용한 지하철역, 관광명소, 전기차 충전소 위치 확인 - 리뷰 작성 시 평점에 따른 각 숙소, 업체의 평점 평균 계산 - 결제 api 기능(카카오, 토스) - 업체주인 권한 기능 - 숙소 및 렌트카 업체와 차량 등록 가능 - 전체 페이지 모바일 반응형 적용 |
| 설계의 주안점 | 1. 사용자 중심의 정보 설계 - 사용자 경험(UX)을 최우선으로 고려하여, 숙소 및 렌트카 검색 조건(날짜, 지역, 인원 수 등)에 따른 정보 탐색이 용이하도록 정보 구조와 UI 설계. - 반응형 웹 디자인을 적용해 PC, 모바일 등 다양한 디바이스에서도 일관된 사용자 경험을 제공하고, 메인화면 이미지 스와이프 및 직관적인 검색 필터로 접근성과 편의성 향상. 2. 외부 API 및 실시간 연동 기능의 통합 최적화 - 로그인(OAuth2 기반 카카오/네이버/구글), 결제(KakaoPay, Toss), 지도(Kakao Map), 문자 인증(SOLAPI) 등 다양한 외부 API를 안정적으로 연동하여 사용자의 실제 사용성을 강화하였습니다. - 지도 API를 통해 숙소 주변 정보(지하철역, 관광명소, 전기차 충전소 등)를 시각적으로 제공함으로써 정보 탐색의 효율성과 서비스 신뢰도를 높였습니다. 3. 데이터베이스 구조 및 보안성 고려 - 회원 정보, 예약, 리뷰, 업체 등록 등은 MySQL 기반의 정규화된 관계형 데이터베이스로 구성하여 안정적인 데이터 저장과 조회 성능 확보. - 비밀번호는 Bcrypt 알고리즘으로 암호화하였고, SQL Injection 및 XSS 공격을 방지하기 위한 필터링 처리와 예외처리 로직을 전반적으로 적용. 4. 권한 기반 사용자 역할 분리 - 사용자 유형(NORMAL, KAKAO, NAVER, GOOGLE) 및 권한(ADMIN, OWNER, USER)에 따른 접근 제어를 적용하여, 관리자/업체주인/일반사용자 각각의 기능을 명확히 분리. - OWNER 권한 사용자는 직접 숙소 및 차량 정보를 등록할 수 있도록 하였고, 사용자는 마이페이지를 통해 본인의 예약·리뷰 데이터를 편리하게 조회/관리할 수 있도록 구성. 5. 협업 효율성과 유지보수성 확보 - 프론트/백 단위의 명확한 기능 분담과 Git을 활용한 버전 관리를 통해 협업 효율을 극대화하였고, 공통 모듈(헤더, 푸터, 캘린더 등)의 컴포넌트화로 코드 재사용성과 유지보수성을 고려한 구조로 설계. - 향후 확장성(예: 리뷰 필터, 이벤트 페이지, 관리자 통계 기능)을 고려하여 서비스 계층(Service Layer)와 데이터 계층(DAO)을 분리하여 설계하였으며, Spring MVC 구조의 명확한 역할 분담을 기반으로 전체 시스템을 구성. |
| 사용기술 및 개발환경 |
- Frontend - HTML/CSS, javascript, JQuery, AJAX, Thymeleaf - Backend - Java, Spring Boot, Mybatis - DB - MySQL - 개발도구 - Visual Studio Code - API - 카카오 로그인, 카카오 맵, 구글 로그인, 네이버 로그인, PortOne(카카오, 토스 페이), SOLAPI |