Skip to content

0w0n2/tako

Repository files navigation

[블록체인 기반 TCG 카드 P2P 경매 플랫폼]

TAKO



블록체인객체 탐지 모델을 결합하여
TCG(Trading Card Game) 카드 거래 시장을 혁신하는 경매 플랫폼

AI가 카드의 품질을 객관적으로 평가하고, 블록체인 기술로 안전하고 투명한 경매 거래와 각 상품에 대한 경매 기록을 위변조 불가능한 디지털 자산으로 보관하는 서비스를 제공하여 기존 중고 카드 시장의 핵심 문제인 불신과 위변조 위험을 해결합니다.

  • 개발 기간 : 2025.08.25 ~ 2025.09.29 (5주)
  • 플랫폼 : Web
  • 개발 인원 : 5명
  • 기관 : 삼성 청년 SW·AI 아카데미 13기

영상 포트폴리오 🔗




🔎 목차




이혜원 (팀장)
《Backend & DApp》


김민규
《Backend》


유정석
《DevOps & DApp》


이재익
《Frontend & AI》


조우영
《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) 설계


💰 DApp

Solidity Alchemy Ethereum VSCode
Web3j OpenZeppelin ethers.js web3-react

구분사용 기술
LanguageSolidity
BlockchainEthereum (Sepolia Testnet), Alchemy
Framework & ToolsHardhat 2.26.3
Library
  • Smart Contract: OpenZepplin 5.4.0
  • BE-Integration: Web3j 4.13.0
  • FE-Integration: Metamask 22.1.1, Ethers.js 6.15.0, web3-react ^8.2.3
IDEVisual Studio Code 1.103.1


🌆 Backend

Java Gradle IntelliJ IDEA VSCode
Spring Boot Spring Security JWT
Hibernate Web3j Firebase Admin Swagger
MySQL Redis

구분사용 기술
LanguageJava 17
FrameworkSpring Boot 3.5.5
LibrarySpring 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
DatabaseMySQL 8.0.43, Redis 8.0.3
IDEIntelliJ IDEA 2025.1.3 (Ultimate Edition), Visual Studio Code 1.103.1
Build ToolGradle 8.14.3


🌅 Frontend

VSCode React TypeScript
TailwindCSS RadixUI Zustand TanStack React Query
Swiper.js ethers.js web3-react

구분사용 기술
LanguageTypeScript 5, JavaScript
FrameworkNext.js 14.2.23
Library
  • UI/Form/Data Fetch: React 18.3.1, React-Hook-Form 7.62.0, Tailwind CSS 4, Axios 1.12.2
  • State Management: Zustand ^5.0.8, TanStack Query 5.90.1
  • Blockchain: Metamask 22.1.1, Ethers.js 6.15.0, Web3-react ^8.2.3
IDEVisual Studio Code 1.103.1, Cursor


🤖 AI

Python FastAPI mlflow VSCode
PyTorch OpenCV Gunicorn NumPy

구분사용 기술
LanguagePython 3.10.11
FrameworkFastAPI 0.116
LibraryTorch 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
MLOpsMLflow
ModelYOLOv8, YOLOv11, Faster R-CNN
IDEVisual Studio Code 1.103.1


🛡️ DevOps

Docker Jenkins Nginx Ubuntu
Amazon EC2 Amazon S3 Cloudflare
Grafana Prometheus

구분사용 기술
Operating SystemUbuntu 22.04.5 LTS (Jammy)
Instance TypeT2.XLARGE
CPU4 vCPUs
RAM16 GB
StorageSSD: 320 GB, HDD: 6 TB
Docker28.4.0
Docker Compose2.39.2
Web ServerNginx 1.27
CI/CDJenkins 2.516.2
MonitoringGrafana 12.1.1, Prometheus 3.5.0
(Node Exporter 1.9.1, cAdvisor 1.2.1, Alertmanager 0.28.1)
webhook handlerJenkins Groovy 2.479.1


🤝 Collaboration

Git GitLab Figma
Notion Discord Jira



🌐 System Architecture


🔔 Real-time CI/CD & Project Event Alerts

✅ Jenkins Pipeline Success ❌ Jenkins Pipeline Failure
🔀 Merge Request Created Notification 🗨️ Jira Issue Notification
🚨 CPU Anomaly Detected 🚨 Memory Anomaly Detected
✅ CPU Anomaly Cleared ✅ Memory Anomaly Cleared


메인화면 회원가입/로그인
메타마스크 지갑 연동 경매 정보 조회
카드 별 경매 정보 조회 판매자 경매 등록
경매 상세 정보 조회 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
              


🖼️ 화면 설계서



✅ Swagger API Docs

🌆 Backend Spring

🤖 Backend FastAPI

📅 Jira Issues

Details

Details

Details



About

✨ A TCG card auction platform that integrates an object detection model to automate card quality evaluation and utilizes blockchain technology to create an immutable, transparent ledger of all auction histories.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors