블록체인 기반 P2P 숙박 예약 플랫폼
스마트 계약(Smart Contract) 을 통해 신뢰 없이 투명한 거래를 보장하고,
디지털 키 발급 및 결제 내역을 온체인(On-chain)으로 관리하여,
중개 수수료 없이 게스트와 호스트가 직접 연결되는 탈중앙화 숙박 예약 서비스를 제공합니다.
머무는 순간까지, 여행이니까 oasis
- 개발 기간 : 2025.08.25 ~ 2025.09.29 (6주)
- 플랫폼 : PWA Web & Mobile
- 개발 인원 : 6명
- 기관 : 삼성 청년 SW·AI 아카데미 13기
이도윤 [Backend · Leader] |
이민희 [Frontend · BlockChain] |
김수민 [Frontend · Presentation] |
|
- Security, OAuth2, SMTP 기반 인증 API 구현 - 숙소 예약 API 구조 설계 - Swagger / API 명세서 문서화 관리 - 프로젝트 총괄 및 일정 관리 담당 |
- Next.js + TypeScript + PWA 기반 개발 - Polygon 트랜잭션 처리 및 비동기 흐름 최적화 - UI/UX 설계 및 반응형 컴포넌트 구현 - 상태관리(Zustand) + React Query 아키텍처 설계 |
- Firebase 연동 및 설정 - Cloud Firestore 기반 실시간 채팅 구현 - UI 구성 정리 및 사용자 피드백 기반 개선 작업 - 프로젝트 발표 |
이지은 [Infra · IoT] |
원윤서 [Backend · Async API] |
이아현 [Backend · BlockChain] |
|
- CI/CD 파이프라인 구축 / 배포 자동화 - AWS Cloud 환경 세팅 - HW ESP32 및 EC2 통신 연동 / IoT 테스트 환경 구성 - 빌드 / 배포 안정성 및 서버 성능 최적화 |
- 숙소 관련 도메인 설계 및 비지니스 로직 구현 - 비동기 메시징 / 아키텍처 구축 - AI 리뷰 요약 / 번역 기능 구현 - 비동기 API 구조 및 데이터 파이프라인 개선 |
- Solidity 기반 스마트 컨트랙트 설계 - Circle Web3 Service 활용 USDC 결제 시스템 구축 - Polygon 네트워크 연동 - 온체인 데이터 정합성 검증 및 운영 자동화 |
| Category | Stack |
|---|---|
| Language | TypeScript 5.6.2 |
| Runtime Environment | Node.js 22.12.0 (PWA 기반) |
| Framework | Next.js 15.5.2, React 18.3.1 (App Router) |
| Styling | TailwindCSS 3.4.13, Emotion 11.14.0, Framer Motion 12.23.12 |
| State / Data | Zustand 5.0.8, TanStack React Query 5.87.1, use-debounce 10.0.6 |
| Form / Validation | React Hook Form 7.62.0, Zod 3.23.8, @hookform/resolvers 3.10.0 |
| Network / Auth | Axios 1.11.0, Firebase Auth 12.2.1, JWT Decode 4.0.0 |
| UI / Animation | Swiper 12.0.2, Lottie-web 5.13.0, Lucide-react 0.542.0, Emoji Picker 4.13.3, React Hot Toast 2.6.0 |
| Blockchain / Payment | @circle-fin/w3s-pw-web-sdk 1.1.11 (USDC 결제 처리) |
| Build / PWA | next-pwa 5.6.0, Babel Loader 10.0.0 |
| IDE | Visual Studio Code 1.103.1 |
| Category | Stack |
|---|---|
| Language | Java 17 |
| Framework | Spring Boot 3.3.4 |
| Build Tool | Gradle 8.14.3 |
| Libraries | Spring Security, Spring Validation, Spring Data JPA, QueryDSL, Spring Data Redis, Spring Batch, WebSocket, WebFlux, Quartz Scheduler, jjwt 0.12.3, OAuth2 Client (Google), Springdoc OpenAPI 2.6.0, AWS SDK v2 (S3, SQS), MQTT (Eclipse Paho 1.2.5), OpenAI Proxy API |
| Database | MySQL 8.0.11 (mysql-connector-j), Redis 7.4.5 |
| Blockchain | Web3j Core / Contracts / Utils |
| Messaging | AWS SQS, MQTT |
| Storage | AWS S3 (Transfer Manager) |
| Monitoring | Mattermost Webhook, Spring Actuator |
| Docs | Swagger UI (springdoc-openapi-starter-webmvc-ui 2.6.0) |
| IDE | IntelliJ IDEA 2025.1.3 (Ultimate Edition) |
| Category | Stack |
|---|---|
| Infra | AWS EC2 (Ubuntu 22.04 LTS), AWS S3, AWS SQS |
| CI/CD | Jenkins 2.516.2, Docker 28.1.1, Docker Compose 2.38.2 |
| Web / Proxy | Nginx 1.27 |
| MQTT Broker | Mosquitto 2.0.22 |
| Monitoring | Grafana 12.2.0, Prometheus v3.5.0, Node Exporter v1.9.1, cAdvisor v0.53.0 |
| Version Control / Auth | GitLab |
| Server Spec | 4 vCPUs / 16 GB RAM / SSD 320 GB / HDD 6 TB |
| 시작 화면 | 회원가입 | 숙소 검색 |
|---|---|---|
![]() |
![]() |
![]() |
| 게스트 스마트키 | 스마트키 리스트 | 채팅 |
![]() |
![]() |
![]() |
| 블록체인 지갑생성 | 블록체인 지갑 충전 | 내 예약 확인 |
![]() |
![]() |
![]() |
| 내 관심 숙소 | 내 리뷰 확인 | 내 프로필 |
![]() |
![]() |
![]() |
| 내 숙소 관리 | 내 숙소 등록 | 숙소 예약 |
![]() |
![]() |
![]() |
Frontend-App
📦 front
┣ 📂public
┃ ┣ 📂fonts
┃ ┣ 📂icons
┃ ┣ 📂lotties
┃ ┗ 📜manifest.webmanifest
┣ 📂src
┃ ┣ 📂apis
┃ ┣ 📂app
┃ ┃ ┣ 📂chat
┃ ┃ ┣ 📂create-stay
┃ ┃ ┣ 📂edit-stay
┃ ┃ ┣ 📂install-ios
┃ ┃ ┣ 📂language
┃ ┃ ┣ 📂main
┃ ┃ ┣ 📂my-profile
┃ ┃ ┣ 📂register
┃ ┃ ┣ 📂reservation
┃ ┃ ┣ 📂reservation-detail
┃ ┃ ┣ 📂search
┃ ┃ ┣ 📂smart-key
┃ ┃ ┣ 📂splash
┃ ┃ ┣ 📂stays
┃ ┃ ┗ 📂_components
┃ ┣ 📂assets
┃ ┃ ┣ 📂icons
┃ ┃ ┣ 📂images
┃ ┃ ┃ ┗ 📂flags
┃ ┃ ┗ 📂logos
┃ ┣ 📂components
┃ ┃ ┣ 📂atoms
┃ ┃ ┣ 📂molecules
┃ ┃ ┗ 📂organisms
┃ ┣ 📂features
┃ ┃ ┣ 📂chat
┃ ┃ ┣ 📂common
┃ ┃ ┣ 📂create-stay
┃ ┃ ┣ 📂edit-stay
┃ ┃ ┣ 📂language
┃ ┃ ┣ 📂main
┃ ┃ ┣ 📂my-profile
┃ ┃ ┣ 📂register
┃ ┃ ┣ 📂reservation
┃ ┃ ┣ 📂search
┃ ┃ ┣ 📂smart-key
┃ ┃ ┣ 📂splash
┃ ┃ ┗ 📂stays
┃ ┣ 📂lib
┃ ┃ ┣ 📂circle
┃ ┃ ┗ 📂firebase
┃ ┣ 📂providers
┃ ┣ 📂services
┃ ┣ 📂stores
┃ ┣ 📂types
┃ ┗ 📂utils
┣ 📂styles
┣ 📂types
┣ 📜.prettierrc
┣ 📜dockerfile
┣ 📜eslint.config.mjs
┣ 📜next.config.ts
┣ 📜package.json
┣ 📜postcss.config.js
┣ 📜README.md
┣ 📜tailwind.config.js
┣ 📜tailwind.config.ts
┣ 📜tsconfig.json
┗ 📜README.md
Backend-Core
📦 oasis
┣ 📂.gradle
┃ ┣ 📂8.14.3
┃ ┣ 📂buildOutputCleanup
┃ ┗ 📂vcs-1
┣ 📂.idea
┃ ┗ 📂modules
┣ 📂gradle
┃ ┗ 📂wrapper
┣ 📂build
┃ ┣ 📂classes
┃ ┃ ┗ 📂java
┃ ┃ ┃ ┗ 📂main
┃ ┃ ┃ ┃ ┗ 📂org
┃ ┃ ┃ ┃ ┃ ┗ 📂muhan
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂oasis
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂charging
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂chatTranslate
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂util
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂base
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂exception
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂external
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂circle
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂key
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mqtt
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂handler
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂openAI
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂client
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂reservation
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂enums
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂listener
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂review
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂s3
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂security
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂exception
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂handler
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂jwt
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂settlement
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂stay
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂user
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂wallet
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂circle
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂web3
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂wish
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂in
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂out
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┣ 📂resources
┃ ┗ 📂tmp
┣ 📂src
┃ ┣ 📂main
┃ ┃ ┣ 📂java
┃ ┃ ┃ ┗ 📂org
┃ ┃ ┃ ┃ ┗ 📂muhan
┃ ┃ ┃ ┃ ┃ ┗ 📂oasis
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂charging
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂chatTranslate
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂external
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂key
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mqtt
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂openAI
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂reservation
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂review
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂s3
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂security
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂settlement
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂stay
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂user
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂wallet
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂web3
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂wish
┃ ┃ ┗ 📂resources
┃ ┗ 📂test
┃ ┃ ┗ 📂java
┃ ┃ ┃ ┗ 📂org
┃ ┃ ┃ ┃ ┗ 📂muhan
┃ ┃ ┃ ┃ ┃ ┗ 📂oasis
┣ 📜.gitattributes
┣ 📜.gitignore
┣ 📜build.gradle
┣ 📜Dockerfile
┣ 📜gradlew
┣ 📜gradlew.bat
┣ 📜README.md
┗ 📜settings.gradle


























