Recompia
Pokémon Pokopia를 Windows에서 직접 실행, 멀티플레이·모드·기능 향상 지원
Opening Lab은 무료 학습 도구인 Square Memory, Position Recall와 체스 오프닝 연습 팩을 제공합니다
Opening Lab also has great, effective free learning tools: Square Memory and Position Recall, plus chess opening drill packs.
게임TypeScript · JavaScriptGitHub @TangoCash38온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Strict chess opening memory training — Learn & Practice modes, animated board, free Scotch Gambit + premium packs
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Strict chess opening memory training — Practice & Test modes, animated board, and £1.99 drill packs.
• React 19 + TypeScript + Vite 8
• TanStack Start / Router
• Tailwind CSS v4
• chess.js
• CBurnett piece SVGs (public/pieces/)
Demo unlocks use localStorage (src/lib/unlocks.ts).
On Vercel, set RESEND_API_KEY so Opening Lab can send:
• Welcome after someone creates an email account
• Lab+ welcome after they subscribe
• Pack confirmation after they buy a pack
From: Opening Lab.
Without the key the site still works; emails are skipped.README 전문 보기 ↗Strict chess opening memory training — Practice & Test modes, animated board, and £1.99 drill packs.
public/pieces/)| Tier | Price |
|---|---|
| Paid drill packs | £1.99 |
| Opening Traps | 6 lines free, then £1.99 |
| Caro-Kann for Black | 3 lines free, then £1.99 |
| Scotch Gambit lessons | £2.99 (parked, not on sale) |
| Opening Lab+ | £4.99 / month or £29.99 / year (not on sale) |
| Pay as you go | £1.99 per pack |
| Buy all | £10.99 one-time. Every drill pack now and any future drill packs. Not Lessons. Not a subscription. Not lifetime access. |
Demo unlocks use localStorage (src/lib/unlocks.ts).
On Vercel, set RESEND_API_KEY so Opening Lab can send:
From: Opening Lab <[email protected]>.
Without the key the site still works; emails are skipped.
Optional fallback if you already have a mailbox: SMTP_HOST, SMTP_USER, SMTP_PASS.
One-click import (recommended):
https://vercel.com/new/clone?repository-url=https://github.com/TangoCash38/opening-lab
Or:
TangoCash38/opening-lab.vercel/output via npm run build)npm run buildCLI (if you have a token):
npx vercel login
npx vercel --prod
src/
components/opening-lab/
app-shell.tsx # Native-style header + views
pack-list.tsx # Packs, locks, prices
unlock-modal.tsx # Pay as you go / Lab+
train-view.tsx # Practice / Test
chess-board.tsx # Sliding pieces
chess-pieces.tsx
guide-view.tsx
mini-board.tsx
data/
packs.ts # Lines + isFree / isPremium / price
pricing.ts # £1.99 drill packs / lessons £2.99 / Lab+ £4.99 mo · £29.99 yr
hooks/use-unlocks.ts
lib/unlocks.ts
routes/
styles.css # Tokens, board, touch CSS
public/
pieces/
manifest.webmanifest
favicon.svg
og.jpg
Website-only authoring: pick Black or White, play both sides on a Book
board, then Remember this line. The locked SAN is stored in
localStorage (src/lib/gym-line.ts) and trains with the same Practice →
Test loop as a curated pack. Test unlocks after a clean Practice.
The authoring board shows a local opening chip (Italian Game · C50)
from src/lib/opening-identity.ts — deepest SAN-from-start / FEN match,
or Opening… when unknown. It never invents a pack name.
While authoring, the board POSTs /api/practice-review-eval (depth: 12,
~400ms debounce) and paints full Engine chrome: thin eval bar, MultiPV-2
rows, and soft green hints from each PV first move. Status copy is
Engine · suggesting… only — never “SF cloud”, “Stockfish cloud”, or
“Lichess”. Fail-soft { ok: false } hides the bar, MultiPV, and greens.
Practice and Test never show Engine / MultiPV chrome.
The Remembered sheet body is the full line SAN, e.g.
Remembered — 1.e4 e5 2.Nf3 Nc6 — locked as your gym line. Train it like a pack.
Play wrap hides this entry (!isPlayApp()).
POST /api/practice-review-eval is a short MultiPV-2 Engine eval (default
depth 14, hard cap 16, wall ~2.5s). Create-your-own authoring reuses it at
depth 12. Never mid-drill in Practice or Test.
Vercel has no Stockfish binary. Leave STOCKFISH_PATH unset on
Vercel; the handler fail-softs { ok: false } (HTTP 200). Live eval comes
later via a small worker that sets STOCKFISH_PATH (e.g. /usr/games/stockfish
or /usr/bin/stockfish) and is reached as PRACTICE_REVIEW_EVAL_URL
(same POST contract). Do not ship WASM Stockfish (or any GPL engine
net) to the client or the Play WebView bundle.
Product copy should say Engine, not “Lichess / Stockfish cloud”.
npm install
npm run dev # 0.0.0.0:8080
npm run build
npm run typecheck
https://github.com/TangoCash38/opening-lab
The Play app is a raw System WebView (not Chrome TWA). Path B billing is
one-time packs (pack_<pack_id_with_underscores>) and buy_all_packs via
POST /api/play/subscribe and the Android Publisher products API. No Lab+.
Set GOOGLE_PLAY_SERVICE_ACCOUNT_JSON on the host or subscribe returns 503
without granting. Project and build steps: android/README.md.