블록체인과 객체 탐지 모델을 결합하여
TCG(Trading Card Game) 카드 거래 시장을 혁신하는 경매 플랫폼
AI가 카드의 품질을 객관적으로 평가하고, 블록체인 기술로 안전하고 투명한 경매 거래와 각 상품에 대한 경매 기록을 위변조 불가능한 디지털 자산으로 보관하는 서비스를 제공하여 기존 중고 카드 시장의 핵심 문제인 불신과 위변조 위험을 해결합니다.
- 개발 기간 : 2025.08.25 ~ 2025.09.29 (5주)
- 플랫폼 : Web
- 개발 인원 : 5명
- 기관 : 삼성 청년 SW·AI 아카데미 13기
이혜원 (팀장) |
김민규 |
유정석 |
이재익 |
조우영 《Frontend》 |
|
- DApp 경매 에스크로 컨트랙트 개발 - Spring Security 기반 인증 API 구현 - Web3j 활용 블록체인-DB 정합성 검증 및 낙찰 후속 처리 리스너 구현 |
- 스케줄러 기반 경매 자동화 API 구현 - Redis(Lua) 활용 실시간 입찰 및 인기 카드 관리 - N-gram 및 FCM·SSE 기반 실시간 알림 개발 |
- 인프라 및 CI/CD 파이프라인 구축·운영 - ERC-721 기반 NFT 컨트랙트 개발 - 프론트엔드 내 web3 연동 |
- 딥러닝(YOLO) 기반 카드 결함 탐지 모델 개발 - FastAPI 기반 AI 모델 서빙 서버 및 파이프라인 구축 - 카드 시뮬레이션 UI 및 데이터 Fetching 로직 구현 |
- UI/UX 디자인 총괄 및 디자인 시스템 설계 - TanStack Query 캐싱을 통한 프론트엔드 성능 최적화 - 계층적 데이터 Fetching 구조(lib→hooks) 설계 |
| 구분 | 사용 기술 |
|---|---|
| Language | Solidity |
| Blockchain | Ethereum (Sepolia Testnet), Alchemy |
| Framework & Tools | Hardhat 2.26.3 |
| Library |
|
| IDE | Visual Studio Code 1.103.1 |
| 구분 | 사용 기술 |
|---|---|
| Language | Java 17 |
| Framework | Spring Boot 3.5.5 |
| Library | Spring Validation, Spring Data JPA, Spring Data Redis, Spring Security, Spring Mail, Spring Dotenv 3.0.0, Spring Test, Spring AWS S3, Firebase Admin (FCM) 9.1.1, QueryDSL 5.0.0, Web3j 4.13.0, JWT (Java JWT) 0.12.6, Scrimage 4.0.32 |
| Database | MySQL 8.0.43, Redis 8.0.3 |
| IDE | IntelliJ IDEA 2025.1.3 (Ultimate Edition), Visual Studio Code 1.103.1 |
| Build Tool | Gradle 8.14.3 |
| 구분 | 사용 기술 |
|---|---|
| Language | TypeScript 5, JavaScript |
| Framework | Next.js 14.2.23 |
| Library |
|
| IDE | Visual Studio Code 1.103.1, Cursor |
| 구분 | 사용 기술 |
|---|---|
| Language | Python 3.10.11 |
| Framework | FastAPI 0.116 |
| Library | Torch 2.8, Torchvision 0.23, Ultrylytics 8.3, Mmdet 3.3.0, Pillow 11.3, Numpy 2.2, Jinja2 3.1, SQLAlchemy 2.0, Asyncmy 0.2, Contourpy 1.3, Opencv-python 4.2, PyJWT 2.10 |
| Runtime Environment | Uvicorn 0.35, Gunicorn 23.0 |
| MLOps | MLflow |
| Model | YOLOv8, YOLOv11, Faster R-CNN |
| IDE | Visual Studio Code 1.103.1 |
| 구분 | 사용 기술 |
|---|---|
| Operating System | Ubuntu 22.04.5 LTS (Jammy) |
| Instance Type | T2.XLARGE |
| CPU | 4 vCPUs |
| RAM | 16 GB |
| Storage | SSD: 320 GB, HDD: 6 TB |
| Docker | 28.4.0 |
| Docker Compose | 2.39.2 |
| Web Server | Nginx 1.27 |
| CI/CD | Jenkins 2.516.2 |
| Monitoring | Grafana 12.1.1, Prometheus 3.5.0 (Node Exporter 1.9.1, cAdvisor 1.2.1, Alertmanager 0.28.1) |
| webhook handler | Jenkins Groovy 2.479.1 |
| 메인화면 | 회원가입/로그인 |
|---|---|
![]() |
![]() |
| 메타마스크 지갑 연동 | 경매 정보 조회 |
![]() |
![]() |
| 카드 별 경매 정보 조회 | 판매자 경매 등록 |
![]() |
![]() |
| 경매 상세 정보 조회 | NFT 거래 이력 조회 |
![]() |
![]() |
| 문의 등록 | 입찰 |
![]() |
![]() |
| 입찰 내역 조회 | 판매 내역 조회 |
![]() |
![]() |
| 관심 카드/경매 조회 | 판매자 배송 정보 등록 |
![]() |
![]() |
| 판매자 대금 인출 | 판매자 상점 |
![]() |
![]() |
| 알림함/실시간 FCM 알림 | |
![]() |
🌅 Frontend Web
📁 frontend-web
└─ 📁 taako
├─ 📝 .dockerignore
├─ 📝 .gitignore
├─ 📝 next.config.js
├─ 📝 package.json
├─ 📝 README.md
├─ 📝 tsconfig.json
├─ 📁 .vscode
│ └─ 📝 settings.json
├─ 📁 app
│ ├─ 📝 error.tsx
│ ├─ 📝 globals.css
│ ├─ 📝 layout.tsx
│ ├─ 📝 not-found.tsx
│ ├─ 📝 page.tsx
│ ├─ 📁 admin
│ │ ├─ 📝 layout.tsx
│ │ └─ 📝 page.tsx
│ ├─ 📁 login
│ │ ├─ 📝 LoginForm.tsx
│ │ └─ 📝 page.tsx
│ ├─ 📁 mypage
│ │ ├─ 📝 layout.tsx
│ │ └─ 📝 page.tsx
│ └─ 📁 ... (other routes)
├─ 📁 components
│ ├─ 📝 Footer.tsx
│ ├─ 📝 Loading.tsx
│ ├─ 📁 header
│ ├─ 📁 cards
│ ├─ 📁 modals
│ └─ 📁 ... (other component groups)
├─ 📁 hooks
│ ├─ 📝 useMyInfo.ts
│ ├─ 📝 useAuctionsQuery.ts
│ └─ 📝 useWallet.ts
├─ 📁 lib
│ ├─ 📝 api.ts
│ ├─ 📝 utils.ts
│ ├─ 📝 firebase.ts
│ └─ 📁 auth
├─ 📁 public
│ ├─ 📝 logo.png
│ ├─ 📝 vercel.svg
│ ├─ 📁 icon
│ └─ 📁 img
├─ 📁 scripts
│ └─ 📝 generate-firebase-sw.cjs
├─ 📁 stores
│ ├─ 📝 useAuthStore.ts
│ └─ 📝 useOverlaySpin.ts
├─ 📁 styles
│ └─ 📝 index.css
└─ 📁 types
├─ 📝 auction.ts
├─ 📝 user.ts
└─ 📝 card.ts
🌆 Backend Spring
📁 backend-spring
├─ 📝 .dockerignore
├─ 📝 .gitattributes
├─ 📝 .gitignore
├─ 📝 build.gradle
├─ 📝 Dockerfile
├─ 📝 gradlew
├─ 📝 gradlew.bat
├─ 📝 settings.gradle
├─ 📁 codegen
│ ├─ 📝 AuctionEscrow.abi
│ ├─ 📝 AuctionFactory.abi
│ └─ 📝 TakoCardNFT.abi
├─ 📁 gradle
└─ 📁 src
├─ 📁 main
│ ├─ 📁 java
│ │ └─ 📁 com
│ │ └─ 📁 bukadong
│ │ └─ 📁 tcg
│ │ ├─ 📝 TcgApplication.java
│ │ ├─ 📁 api
│ │ │ ├─ 📁 admin
│ │ │ │ ├─ 📁 auction
│ │ │ │ ├─ 📁 blockchain
│ │ │ │ ├─ 📁 card
│ │ │ │ ├─ 📁 category
│ │ │ │ ├─ 📁 common
│ │ │ │ ├─ 📁 fcm
│ │ │ │ └─ 📁 notice
│ │ │ ├─ 📁 auction
│ │ │ │ ├─ 📁 bootstrap
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 converter
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 event
│ │ │ │ ├─ 📁 listener
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 scheduler
│ │ │ │ ├─ 📁 service
│ │ │ │ ├─ 📁 sse
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 auth
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ └─ 📁 service
│ │ │ ├─ 📁 bid
│ │ │ │ ├─ 📁 config
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 converter
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 service
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 card
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 service
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 category
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ └─ 📁 service
│ │ │ ├─ 📁 delivery
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 scheduler
│ │ │ │ └─ 📁 service
│ │ │ ├─ 📁 fcm
│ │ │ │ ├─ 📁 config
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ └─ 📁 service
│ │ │ ├─ 📁 game
│ │ │ │ └─ 📁 entity
│ │ │ ├─ 📁 health
│ │ │ ├─ 📁 inquiry
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 service
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 media
│ │ │ │ ├─ 📁 config
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 guard
│ │ │ │ ├─ 📁 policy
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 service
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 member
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ └─ 📁 service
│ │ │ ├─ 📁 notice
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ └─ 📁 service
│ │ │ ├─ 📁 notification
│ │ │ │ ├─ 📁 config
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 event
│ │ │ │ ├─ 📁 repository
│ │ │ │ ├─ 📁 service
│ │ │ │ ├─ 📁 sse
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 popularity
│ │ │ │ ├─ 📁 aop
│ │ │ │ ├─ 📁 config
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 dto
│ │ │ │ ├─ 📁 service
│ │ │ │ └─ 📁 util
│ │ │ ├─ 📁 push
│ │ │ │ └─ 📁 entity
│ │ │ ├─ 📁 test
│ │ │ ├─ 📁 trade
│ │ │ │ ├─ 📁 entity
│ │ │ │ └─ 📁 repository
│ │ │ ├─ 📁 trust
│ │ │ │ ├─ 📁 controller
│ │ │ │ ├─ 📁 entity
│ │ │ │ ├─ 📁 repository
│ │ │ │ └─ 📁 service
│ │ │ └─ 📁 wish
│ │ │ ├─ 📁 controller
│ │ │ ├─ 📁 dto
│ │ │ ├─ 📁 entity
│ │ │ ├─ 📁 repository
│ │ │ └─ 📁 service
│ │ └─ 📁 global
│ │ ├─ 📁 batch
│ │ │ ├─ 📁 config
│ │ │ ├─ 📁 controller
│ │ │ ├─ 📁 job
│ │ │ └─ 📁 schedule
│ │ ├─ 📁 blockchain
│ │ │ ├─ 📁 constants
│ │ │ ├─ 📁 contracts
│ │ │ ├─ 📁 event
│ │ │ ├─ 📁 listener
│ │ │ ├─ 📁 service
│ │ │ └─ 📁 util
│ │ ├─ 📁 common
│ │ │ ├─ 📁 base
│ │ │ ├─ 📁 dto
│ │ │ └─ 📁 exception
│ │ ├─ 📁 config
│ │ ├─ 📁 constant
│ │ ├─ 📁 mail
│ │ │ ├─ 📁 constants
│ │ │ ├─ 📁 dto
│ │ │ ├─ 📁 provider
│ │ │ └─ 📁 service
│ │ ├─ 📁 properties
│ │ │ └─ 📁 blockchain
│ │ ├─ 📁 security
│ │ │ ├─ 📁 config
│ │ │ ├─ 📁 dto
│ │ │ ├─ 📁 filter
│ │ │ ├─ 📁 handler
│ │ │ └─ 📁 provider
│ │ └─ 📁 util
│ └─ 📁 resources
│ ├─ 📝 application.yml
│ ├─ 📝 logback-spring.xml
│ └─ 📁 firebase
│ └─ 📝 tcg-auction-fcm.json
└─ 📁 test
🤖 Backend FastAPI
📁 backend-fastapi
├─ 📝 .gitignore
├─ 📝 .gitkeep
├─ 📝 Dockerfile
├─ 📝 main.py
├─ 📝 requirements.txt
├─ 📝 ws.py
└─ 📁 models
├─ 📝 card_defect_detection.pt
├─ 📝 card_segmentation.pt
└─ 📝 card_verification.pt
💰 DApp
📁 backend-solidity
├─ 📁 contracts
│ ├─ 📝 AuctionEscrow.sol
│ ├─ 📝 AuctionFactory.sol
│ ├─ 📝 TakoCardNFT.sol
│ └─ 📝 Lock.sol
├─ 📁 scripts
├─ 📁 test
├─ 📁 ignition
│ └─ 📁 modules
├─ 📁 .openzeppelin
├─ 📝 hardhat.config.ts
├─ 📝 package.json
└─ 📝 tsconfig.json

































