Sem Panela
참석자 명단, 균형 잡힌 팀 추첨, 경기 비용 관리 기능을 제공합니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Prr
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A fully local MVP app that scrapes today's football double from BetMines, tracks results, and displays historical performance in a modern dark-theme UI.
No cloud. No subscriptions. Runs entirely on your PC.
betmines.com/daily-bets-football.bat files for one-click operationnpm install
npx playwright install chromium
npm run db:migrate
This creates prisma/betmines.db — your local SQLite database.
npm run db:generate
npm run dev
Open http://localhost:3000 in your browser.
Option A — Double-click: SCRAPE.bat
Option B — Terminal:
npm run scrape
Option A — Double-click: RESOLVE.bat
Option B — Terminal:
npm run resolve
Open http://localhost:3000 or refresh the browser.
You can also click the ↓ Scrape Today and ⟳ Resolve Results buttons directly in the UI.
betmines-tracker/
├── prisma/
│ ├── schema.prisma # Database schema
│ └── betmines.db # SQLite database (auto-created)
├── scripts/
│ ├── scrape.ts # npm run scrape
│ └── resolve.ts # npm run resolve
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── doubles/ # GET /api/doubles
│ │ │ ├── scrape/ # POST /api/scrape
│ │ │ ├── resolve/ # POST /api/resolve
│ │ │ └── stats/ # GET /api/stats
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx # Main UI
│ ├── components/
│ │ ├── DoubleCard.tsx # Per-double card
│ │ ├── Header.tsx # Top bar with action buttons
│ │ ├── StatsBar.tsx # Win rate / streak stats
│ │ └── StatusBadge.tsx # WIN / LOSS / PENDING pill
│ └── lib/
│ ├── db/
│ │ └── prisma.ts # Prisma singleton
│ ├── scraper/
│ │ └── betmines.ts # Playwright scraper
│ ├── services/
│ │ ├── doubleService.ts # DB operations
│ │ ├── resolveService.ts # Result resolution
│ │ └── resultEvaluator.ts # WIN/LOSS logic
│ └── types.ts # TypeScript types
├── SCRAPE.bat # Windows one-click scrape
├── RESOLVE.bat # Windows one-click resolve
├── .env # Environment variables
└── README.md
| Market | WIN condition |
|---|---|
| Over 2.5 | Total goals ≥ 3 |
| Over 1.5 | Total goals ≥ 2 |
| Under 2.5 | Total goals ≤ 2 |
| BTTS Yes | Both teams score |
| BTTS No | At least one team scores 0 |
| Home (1) | Home team wins |
| Draw (X) | Draw |
| Away (2) | Away team wins |
| Double Chance 1X | Home win or draw |
| Double Chance 12 | Home win or away win |
| Double Chance X2 | Draw or away win |
For a double to WIN, both selections must WIN.
| Command | Description |
|---|---|
npm run dev | Start UI at localhost:3000 |
npm run scrape | Scrape today's double |
npm run resolve | Check results for pending doubles |
npm run db:migrate | Initialize / migrate database |
npm run db:generate | Regenerate Prisma client |
npm run db:studio | Open Prisma Studio (DB browser) |
npm run db:reset | ⚠️ Wipe all data |
The scraper targets betmines.com/daily-bets-football using Playwright with Chromium in headless mode. It uses multiple CSS selector strategies for robustness.
If BetMines changes their layout, the scraper falls back to demo data (labelled in the terminal). In that case:
src/lib/scraper/betmines.tsparseSelectionsFromPage()You can also manually add entries via Prisma Studio:
npm run db:studio
To run automatically every day without opening a terminal:
Win+R → taskschd.msc)cmd.exe/c "cd /d C:\path\to\betmines-tracker && npm run scrape"Repeat for Resolve at 10:00 AM next day (or offset by hours).
model BetDouble {
id Int @id @default(autoincrement())
date String @unique // YYYY-MM-DD
totalOdds Float
status DoubleStatus @default(PENDING)
createdAt DateTime @default(now())
selections BetSelection[]
}
model BetSelection {
id Int @id @default(autoincrement())
homeTeam String
awayTeam String
market String
line Float?
odd Float
league String
country String
kickoff String
resultStatus SelectionStatus @default(PENDING)
homeScore Int?
awayScore Int?
}
"Cannot find module @prisma/client"
npm run db:generate
"Database file not found"
npm run db:migrate
"Playwright browser not installed"
npx playwright install chromium
Scraper finds no data
src/lib/scraper/betmines.tsBuilt for local use only. No data leaves your machine.