온타임(On-Time) 서비스의 백엔드 서버입니다.
Spring Boot + Kotlin 기반으로 인증, 약속(모임), 친구, 참여자 위치/도착, 통계 기능을 제공합니다.
- 모임 생성/참여/정산 흐름을 API로 제공
- 약속 시간 준수(도착 상태, 위치 공유) 지원
- 사용자/친구 기반의 사회적 상호작용 기능 제공
- 인증
- 회원가입, 로그인, 토큰 재발급, 로그아웃
- 모임
- 모임 생성/조회/삭제
- 사용자별 모임 목록 조회
- 모임 참가 가능 친구 탐색
- 친구
- 친구 검색, 친구 요청/수락/거절/삭제
- 친구 목록/요청 목록 조회
- 참여자/통계
- 참여자 위치 갱신/조회
- 도착 상태 갱신/조회
- 사용자/모임 통계 조회
주요 컨트롤러 기준 엔드포인트:
api/v1/auth/*api/v1/meeting/*api/v1/friendship/*api/v1/meeting/{meetingId}/location/*api/v1/meeting/{meetingId}/arrival/*api/v1/user/{userId}/statisticsapi/v1/meeting/{meetingId}/statistics
상세는 코드에서 확인:
/Users/saeyeonn/Desktop/Project/ontime/src/main/kotlin/org/itm/ontime/presentation/controller
레이어 구조:
presentation
- Controller, request/response DTO, HTTP advice/filter
application
- Service, 예외 처리, 비즈니스 오케스트레이션
domain
- 엔티티, 값 객체, 상태 enum
infrastructure
- JPA Repository, Security, 외부 연동(FCM, QR)
- Language/Runtime
- Kotlin 1.9.x, Java 21
- Framework
- Spring Boot 3.5.x
- Spring Web, Spring Data JPA, Spring Security, Actuator
- Data
- MySQL 8
- HikariCP
- API 문서
- springdoc-openapi
- Test
- JUnit 5, Spring Boot Test, MockMvc
docker run --name ontime-perf-mysql -e MYSQL_ROOT_PASSWORD=ontime -e MYSQL_DATABASE=ontime -p 3307:3306 -d mysql:8.0SPRING_DOCKER_COMPOSE_ENABLED=false \
SPRING_DATASOURCE_URL='jdbc:mysql://localhost:3307/ontime?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC' \
SPRING_DATASOURCE_USERNAME=root \
SPRING_DATASOURCE_PASSWORD=ontime \
SERVER_PORT=8081 \
./gradlew bootRun./gradlew test --tests 'org.itm.ontime.presentation.ApiContractRegressionTest'./perf/measure-before.sh
./perf/measure-after.sh- ADR
/Users/saeyeonn/Desktop/Project/ontime/adr
- 실행 계획
/Users/saeyeonn/Desktop/Project/ontime/adr/implementation_phases.md/Users/saeyeonn/Desktop/Project/ontime/adr/refactor_execution_plan.md
- 보고/인수인계/패키지
/Users/saeyeonn/Desktop/Project/ontime/adr/report.md/Users/saeyeonn/Desktop/Project/ontime/adr/handoff.md/Users/saeyeonn/Desktop/Project/ontime/adr/package.md
- 트러블슈팅
/Users/saeyeonn/Desktop/Project/ontime/trouble-shooting