2025 ProfitLab 해커톤 - 페스티벌 전용 모바일 오더·대기 관리 솔루션
MOSH는 공연과 부스 이용이 동시에 일어나는 혼잡한 페스티벌 현장에서, 오프라인 줄 서기로 인한 '공연 관람 기회 박탈'과 '체력 소모' 문제를 해결하는 서비스입니다.
- Language: Java 17
- Framework: Spring Boot 4.0.1
- Database: MySQL 8.0, Redis
- Security: Spring Security, JWT
- Build Tool: Gradle 9.2.1
- Deployment: Docker, AWS EC2, GitHub Actions
-
인증/회원가입
- Mock 소셜 로그인 (Kakao, Naver)
- 전화번호 인증 (Redis 기반 OTP)
- JWT 기반 인증
-
티켓 인증
- 예매번호 인증으로 리워드 지급 (3,000 캐시)
-
축제/부스 탐색
- 축제 목록 조회
- 타임테이블 조회
- 부스 검색 (F&B, MD, POPUP, EVENT)
-
주문/결제
- 메뉴 선택 및 주문 생성
- Mock 결제 (토스페이먼츠 기준)
- CASH 결제 (리워드 사용)
-
리뷰
- 메뉴별 리뷰 작성/조회
-
알람
- 공연 시작 알림 설정 (Redis 인메모리)
-
AI 챗봇
- Solar LLM API 연동 (프롬프트 엔지니어링)
src/main/java/com/example/mosh_be/
├── config/ # 설정 (Security, Redis, WebClient)
├── controller/ # REST API 컨트롤러
├── domain/
│ ├── entity/ # JPA 엔티티
│ └── enums/ # Enum 타입
├── dto/ # Request/Response DTO
├── exception/ # 예외 처리
├── repository/ # JPA Repository
├── security/ # JWT 인증/인가
├── service/ # 비즈니스 로직
└── util/ # 유틸리티 클래스
모든 엔드포인트는 /api/v1 prefix를 사용합니다.
POST /api/v1/auth/social/{provider}/login- 소셜 로그인POST /api/v1/auth/phone/verifications- 전화번호 인증 코드 발송POST /api/v1/auth/phone/verifications/confirm- 인증 코드 확인POST /api/v1/auth/phone/login- 전화번호 로그인
GET /api/v1/users/me- 내 프로필 조회PATCH /api/v1/users/me- 프로필 수정GET /api/v1/users/me/rewards- 캐시 잔액 조회GET /api/v1/users/me/reward-transactions- 리워드 트랜잭션 목록
POST /api/v1/tickets/verify- 티켓 인증
GET /api/v1/festivals- 축제 목록GET /api/v1/festivals/{festivalId}- 축제 상세GET /api/v1/festivals/{festivalId}/timetable- 타임테이블
GET /api/v1/booths- 부스 목록GET /api/v1/booths/{boothId}- 부스 상세GET /api/v1/booths/{boothId}/menus- 부스별 메뉴GET /api/v1/menus/{menuId}- 메뉴 상세
GET /api/v1/menus/{menuId}/reviews- 메뉴 리뷰 목록POST /api/v1/menus/{menuId}/reviews- 리뷰 작성
GET /api/v1/orders- 내 주문 목록POST /api/v1/orders- 주문 생성GET /api/v1/orders/{orderId}- 주문 상세POST /api/v1/orders/{orderId}/cancel- 주문 취소
POST /api/v1/payments- 결제 생성POST /api/v1/payments/{paymentId}/confirm- 결제 승인POST /api/v1/payments/{paymentId}/cancel- 결제 취소
GET /api/v1/alarms- 알람 목록POST /api/v1/alarms- 알람 설정DELETE /api/v1/alarms/{alarmId}- 알람 삭제
POST /api/v1/chatbot/messages- 챗봇 질의
DB_USERNAME: MySQL 사용자명
DB_PASSWORD: MySQL 비밀번호
REDIS_HOST: Redis 호스트 (기본: 43.201.18.138)
REDIS_PORT: Redis 포트 (기본: 6379)
JWT_SECRET: JWT 시크릿 키
SOLAR_API_URL: Solar LLM API URL
SOLAR_API_KEY: Solar API 키
CORS_ALLOWED_ORIGINS: 허용할 CORS 도메인 (쉼표로 구분)./gradlew clean builddocker build -t mosh-be:latest .docker-compose up -d- ci.yml: dev/feature 브랜치 PR 시 테스트 실행
- deploy.yml: main 브랜치 push 시 EC2 배포