Skip to content

yakisoba0728/gbdaq

Repository files navigation

🪙 GBDAQ · 지비닥

경북소프트웨어마이스터고 교내 라이브 예측시장

“다음 주 급식에 탕수육 나온다?” 같은 교내 사건예 / 아니오로 베팅하고,
가격(= 확률)이 실시간으로 살아 움직이는 폴리마켓 스타일 예측시장 데모입니다.


Next.js React TypeScript Tailwind CSS Framer Motion Vercel

▶ 라이브 데모 — gbdaq.vercel.app


GBDAQ 홈 화면 — 티커 · 히어로 마켓 · 라이브 차트

💼 사업 모델

이건 교내 베팅 앱이 아니라 예측시장을 5분 만에 띄우는 엔진을 보여주는 라이브 데모입니다. 파는 것은 ① LMSR 가격 엔진 ② 실제 LLM 애널리스트 파이프라인 ③ 라이브 UX — 셋을 묶은 화이트라벨입니다.

  • 🏫 학교·동아리·행사 — 축제·선거 같은 행사에 참여형 소통툴을 빠르게 올린다 (B2B/B2G).
  • 🏢 사내 의사결정 예측시장 — 프로젝트 마감·출시일을 사내 베팅으로 forecasting (실재하는 기업 내부 예측시장 카테고리).
  • 💳 과금 — 주최자 시트 구독 · 이벤트 건당 · SDK 연 라이선스. 참여자는 돈을 내지 않고, 매출은 주최측에서 나온다.
  • 🛡️ 규제 비해당 — 전 구간 플레이머니(상점)이며 현금 미환전 → 사행성 규제 비해당, 미성년 안전.

자세한 계획 → docs/PITCH.md

✨ 주요 기능

  • 🎯 실시간 예측시장 — 8개 교내 마켓, 4초마다 시세가 움직이는 라이브 가격 + 차트 + 티커
  • 📈 LMSR 가격 책정 — 로그 시장 점수 규칙으로 매수·매도 시 확률·비용·수령액을 정확히 계산
  • 🤖 AI 애널리스트 — API 키 없이 시세·차트·거래량 기반 휴리스틱으로 ‘예/아니오’ 전망·신뢰도·능청스러운 근거를 제시
  • 💰 희소 정수 경제 — 30 상점으로 시작, 1 상점 단위 거래라 한 푼이 아쉬운 긴장감
  • 🏆 랭킹 · 내 지갑 — 리더보드, 보유 포지션 평가액, 거래 내역
  • 🌗 라이트 / 다크 테마 — 애플풍 디자인 시스템 + 부드러운 framer-motion 모션
  • 🔌 백엔드 0 — 100% 클라이언트, localStorage만으로 동작 (오프라인·즉시 실행, 기기별 독립)

🖼️ 미리보기

다크 모드 홈
🌙 다크 모드 — 라이트/다크 토글, 티커의 ▲▼ 실시간 플래시
모든 마켓 그리드
📊 모든 마켓 — 카드 그리드 + 교내 속보 · 인기 마켓 · AI 오늘의 픽
마켓 상세 페이지
🔍 마켓 상세 — 라이브 확률 차트 · LMSR 거래 패널 · 지비닥 AI 애널리스트

⚙️ 작동 방식

📈 LMSR — 가격이 곧 확률

각 마켓은 LMSR(Logarithmic Market Scoring Rule)로 가격을 매깁니다. 가격은 0~1 사이의 값이고, 이는 곧 시장이 매긴 확률입니다. 매수하면 그 방향 가격이 오르고 반대쪽은 내려가며, 두 가격의 합은 항상 1입니다. 확률·매수 지분·매도 수령액은 모두 lib/lmsr.ts의 순수 함수로 계산되며 단위 테스트로 검증됩니다.

⏱️ 클라이언트 가격 엔진

서버·DB 없이 lib/demo/store.tsxDemoProvider4초마다 각 마켓을 random-walk(0.03~0.97 클램프)시켜 새 가격을 history에 push합니다. 차트·티커·카드는 스토어를 읽기만 하면 자동으로 살아 움직입니다. 모든 상태(잔액·포지션·원장·시세)는 localStorage에 영속되고, 내비게이션의 리셋 버튼으로 초기 시드 상태로 되돌릴 수 있습니다.

🤖 AI 애널리스트 (휴리스틱)

“지비닥 AI 애널리스트”는 외부 모델 호출 없이 lib/ai/fakeAnalyst.ts의 결정적 휴리스틱으로 전망·신뢰도·능청스러운 한국어 근거를 만들어냅니다. 별도 API 키가 필요 없습니다.

페이지 로드마다 호출은 딱 한 번입니다 — 홈은 보이는 마켓 전체를 한 번에 묶어 분석해 “AI 오늘의 픽”을 고르고, 상세 페이지는 해당 마켓 하나를 분석합니다. 새로고침하면 다시 호출하며, 캐시는 없습니다. 네트워크 호출이 실패해도 클라이언트에서 같은 휴리스틱으로 폴백하므로 데모가 절대 깨지지 않습니다.

🛠️ 기술 스택

영역 사용 기술
프레임워크 Next.js 16 (App Router · Turbopack) · React 19
언어 TypeScript 5
스타일 Tailwind CSS v4 · 애플풍 디자인 토큰 (app/globals.css)
애니메이션 Framer Motion 12
테스트 Vitest 4 (LMSR · AI 애널리스트)
배포 Vercel (icn1 · 서울 리전)

🚀 시작하기

npm install      # 의존성 설치
npm run dev      # 개발 서버 → http://localhost:3000

🔑 환경 변수

이 데모는 별도 환경 변수 없이 실행됩니다.

스크립트 설명
npm run dev 개발 서버 (Turbopack)
npm run build 프로덕션 빌드
npm start 빌드 결과 실행
npm run lint ESLint
npm test 단위 테스트 (Vitest)

📁 프로젝트 구조

app/
  layout.tsx           # 루트 레이아웃 — 테마/스토어/토스트/내비 Provider
  page.tsx             # 홈 — 티커 + 카테고리 탭 + 히어로 + 마켓 그리드
  market/[slug]/       # 마켓 상세 — 차트 · 거래 · AI · 규칙
  leaderboard/         # 랭킹
  portfolio/           # 내 지갑 — 보유 포지션 + 거래 내역
lib/
  demo/store.tsx       # localStorage 스토어 + 클라 가격 엔진 (useDemo 훅)
  demo/seed.ts         # 마켓 8개 · 데모 유저 · 시작 잔액(30 상점)
  lmsr.ts              # LMSR 순수 함수 (+ 단위 테스트)
  ai/fakeAnalyst.ts    # 휴리스틱 AI 애널리스트 (+ 단위 테스트)
  format.ts            # 표시 포맷 (상점 · 퍼센트)
components/
  market/              # 카드 · 히어로 · 라이브 차트 · 거래 패널 · 우측 레일
  ai/                  # AI 분석 패널
  ui/ · theme/         # 토스트 · 애니메이션 퍼센트 · 테마 토글

📝 참고

  • 현재는 정산 없이 상시 시세차익만 다루는 라이브 데모입니다. 정산(resolution)·멀티테넌트·주최자 대시보드는 상용 로드맵입니다 (docs/PITCH.md).
  • AI 애널리스트는 시세 기반 휴리스틱으로만 동작하며 외부 모델/API 키가 필요 없습니다.
  • 상태는 기기별 localStorage 에만 저장되어 사용자 간 공유되지 않습니다.
Made for 경북소프트웨어마이스터고 · GBDAQ

About

경북소마고 교내 라이브 예측시장 — 폴리마켓 스타일 데모 · Next.js 16 · LMSR · 100% client (localStorage)

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors