Shoolvery: 교내 배달비 공유 플랫폼

학생들이 배달비를 함께 부담하며 주문을 공유할 수 있도록 돕는 실시간 교내 딜리버리 매칭 서비스

서비스 개요

Shoolvery는 같은 시간대·위치에서 주문을 원하는 학생들이 배달비를 절감하기 위해 주문을 함께 묶을 수 있는 플랫폼입니다. 실시간 주문 매칭, 자동 정산, 푸시 알림, 리뷰/신뢰도 기능을 포함하며, 캠퍼스 지오펜스 기반 온디맨드 서비스로 설계되었습니다.

서비스 화면

배달비 매칭 리스트
공동 주문 생성 페이지
공동 주문 상세/참여

주요 기능

실시간 배달비 매칭

현재 위치(지오펜스/반경)·시간 윈도우 기반 유사 주문 탐색 및 그룹 생성. Haversine/GeoHash + Spatial Index로 고성능 매칭.

자동 정산 및 상태 추적

배달비/할인/수수료 분배 규칙과 반올림 정책(올림/내림/은행가 반올림) 적용. Cart→Matched→Ordered→Picked→Delivered→Settled 상태 머신.

푸시 알림과 실시간 업데이트

합류 요청/수락/픽업/배달완료 등의 이벤트를 FCM/APNs 푸시 + WebSocket/SSE로 전파. 서버 coalescing과 레이트리밋으로 폭주 제어.

리뷰·신뢰도

주문 완료 건에 한해 후기 작성, 최근성 가중치/완료 수 반영한 신뢰 점수 제공. 신고/차단 기능으로 악성 사용 행위 억제.

운영·안전 장치

매칭룸 수용인원/마감시간/최소금액 조건, 노쇼/지각 시 정책(페널티/자동 환불 규칙) 설정. 관리자 감사로그로 변경 이력 추적.

아키텍처 구성도

architecture-0

백엔드: Spring Boot + REST API, JWT 기반 인증/인가(SB Security). DB: MySQL 8(Spatial Index, POINT/SRID 4326), JPA + QueryDSL. (선택) Redis Pub/Sub(실시간 방송), Rate Limit. 매칭: Haversine/GeoHash 기반 반경+시간 윈도우 필터 → 우선순위(거리/잔여시간/인원) 스코어링 → 매칭룸 생성/합류. 동시성: 룸 용량 unique 제약 + 트랜잭션/락으로 oversubscription 방지, 보상 트랜잭션(취소/환불). 프론트: React Native 앱, WebSocket/SSE 실시간 반영, FCM/APNs 푸시. 운영: 구조적 로깅, 감사로그, (선택) Sentry/Alerting.

기술 스택

백엔드: Spring Boot, Spring Data JPA, QueryDSL, Spring Security(JWT) 데이터베이스: MySQL 8 (Spatial Index, GIS), (선택) Redis 실시간: WebSocket 또는 SSE, FCM/APNs 푸시 인프라: AWS EC2, Docker, Nginx 개발/PM: GitHub, Figma, Notion (선택) 모니터링: Sentry, CloudWatch/Prometheus

담당 역할

문제 해결

회고