- 탈까?-해커톤에 이은 프로젝트
- 출퇴근시간 내가 타려는 버스에 좌석는 몇개나 남아있을까?
- 공공데이터포털에서 버스 정보를 제공받아 실시간 도착정보와 남은 좌석개수 통계 및 예측을 제공하는 서비스입니다.
팀장 : 박성준 |
팀원 : 박수형 |
팀원 : 송해덕 |
- OAuth2.0과 Spring Security를 이용한 네이버 소셜로그인 제공
- 세션을 이용한 로그인 구현
- 소셜인증만 된 상태와(UNREGISTERED) 회원가입이 완료된 상태(USER)의 권한을 분리하여 소셜 인증 후 추가정보 입력 로직 구현
- 마이페이지 및 닉네임 수정 기능 제공
- 비로그인 상태에서 버스-정거장 정보 조회
- 실시간 버스 도착정보 제공
- 최대 2개 버스까지 도착정보 제공
- 선택한 버스에 대한 통계 및 예측 제공
- 과거 같은 요일(최대 5주전까지) 시간대별 남은 좌석 통계 제공
- 과거 통계 데이터를 바탕으로 현재 도착예정 버스의 남은좌석 예측 제공
- 북마크에 여러개의 버스 등록 가능
- ex) 출근길 : 7800번, 3003번
- 실시간 버스 도착정보 제공
- 최대 2개 버스까지 도착정보 제공
- 등록된 버스에 대한 통계 및 예측 제공
- 과거 같은 요일(최대 5주전까지) 시간대별 남은 좌석 통계 제공
- 과거 통계 데이터를 바탕으로 현재 도착예정 버스의 남은좌석 예측 제공
- 이용한 버스-정거장에 대해 쾌적도 및 리뷰 등록 가능
- 이용한 시간대의 쾌적도를 리뷰하여 이후 예측에 활용할 예정(미구현)
- 사용자 관리
- 북마크 통계
- 리뷰 통계
- 수집 버스노선 관리
- 공공 api key 관리
- 스케줄러 관리
- 사용자 가입정보 조회 및 회원탈퇴(삭제)
- 버스 노선-정거장 별 북마크에 등록된 횟수 오름차순 조회
- 버스 노선-정거장 별 리뷰 개수 오름차순 조회
- 실시간 위치정보 수집 대상 노선 관리(등록/삭제)
- 공공 api 사용한도가 1,000천건/1회 이기 때문에 여러개의 api키를 등록하여 사용
- 요창 url별로 한도가 주어지기 때문에 각 url마다 사용량 따로 집계
- 한도가 초과된 api키는 다음날까지 사용되지 않음
- 스케줄 등록이 된 작업 관리 (커스텀 어노테이션 : @DynamicScheduled)
- 버스 위치정보 수집 (3분간격)
- api key 사용량 리셋 (매일 00:00)
- 수집한 위치정보 데이터 가공 (매일 03:00)
- 런타임 중 크론식 변경 가능
- 한개의 작업에 여러개의 크론식 등록 가능 (구분자 "|")
- Spring Boot 3.3.2 / Java 17
- Spring Security (with Session & Cookie)
- Spring Data JPA
- MySQL 8
- Next.js
- Shadcn
- AWS EC2
- AWS RDS
- Docker / Docker compose
- 경기도 버스 노선 조회 : 버스 노선 정보
- 경기도 정류소 조회 : 버스 정거장 정보, 버스 정거장 경유 노선 정보
- 경기도 버스 위치정보 조회 : 특정 노선의 현재 운행중인 버스들의 실시간 위치 정보
- 경기도 버스 도착정보 조회 : 특정 정거장에 도착하는 실시간 버스 도착 정보