{"id":51014289,"url":"https://github.com/ln-dev7/chess-coach","last_synced_at":"2026-06-21T08:02:33.105Z","repository":{"id":364432186,"uuid":"1267880022","full_name":"ln-dev7/chess-coach","owner":"ln-dev7","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-13T01:01:05.000Z","size":180,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-13T02:23:37.227Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://chess-coach-lndev.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ln-dev7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-13T00:04:07.000Z","updated_at":"2026-06-13T01:01:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ln-dev7/chess-coach","commit_stats":null,"previous_names":["ln-dev7/chess-coach"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ln-dev7/chess-coach","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ln-dev7%2Fchess-coach","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ln-dev7%2Fchess-coach/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ln-dev7%2Fchess-coach/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ln-dev7%2Fchess-coach/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ln-dev7","download_url":"https://codeload.github.com/ln-dev7/chess-coach/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ln-dev7%2Fchess-coach/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34601662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-21T08:02:32.148Z","updated_at":"2026-06-21T08:02:33.098Z","avatar_url":"https://github.com/ln-dev7.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ♞ Chess Coach\n\nPersonal chess training app: it fetches your games from **Chess.com** and **Lichess**, analyzes them with **Stockfish** (WASM, in your browser), detects your recurring weaknesses, and generates **personalized lessons and puzzles built from your own games** — inspired by the \"lines of force\" teaching approach.\n\n**No database, no account, no server** for the MVP: everything runs and stays in your browser (localStorage). UI in **French and English** — lessons follow the site language.\n\nBuilt with Next.js (App Router) + Tailwind v4 + chess.js + Stockfish WASM.\n\n## How it works\n\n```\nchess.com / lichess public APIs ──► browser fetch ──► localStorage (games)\n                                                          │\n                  Stockfish WASM (Web Worker) ◄── pending games\n                            │\n                            ▼\n        evals → blunders / motifs / puzzles ──► localStorage\n                            │\n                weakness profile ──► localized lesson templates (FR/EN)\n```\n\n## Run it\n\n```bash\nnpm install   # postinstall copies the Stockfish engine into public/stockfish/\nnpm run dev\n```\n\nOpen http://localhost:3000 → **Sync** → **Analyze pending games** (keep the tab open; ~5–10s per game) → **Generate lessons**. Language switch (FR/EN) is in the nav and in Settings.\n\nNo environment variables needed. Deploy anywhere that serves a Next.js app (Vercel, etc.).\n\n## Features\n\n- **Dashboard** — win rate, accuracy, blunders/game, rating progression chart, top weaknesses\n- **Engine analysis** — blunder/mistake detection with motif classification (hanging pieces, missed tactics, allowed forks, mating-net issues, bad trades) and phase breakdown\n- **Puzzles** — every blunder becomes a \"find the best move\" puzzle from your real games\n- **Lessons (FR/EN)** — generated from your weakness profile; each teaches one mental model with interactive boards (attack overlays — *see the lines of force*), drills from your games, and retrieval-practice quizzes. Lesson text is rendered in the current site language.\n- **AI coach lessons (optional)** — the \"✦ AI coach lesson\" button compiles a full coaching dossier (weaknesses, key positions with engine-verified facts, clock habits via `%clk`, winning-position conversion) and asks an AI model to write a bespoke lesson in your language, with filters (theme, date range, opponent Elo, platform). Works with **Anthropic (Claude), OpenAI (GPT) or Google (Gemini)**. Two ways to enable it:\n  - **Bring your own key**: pick a provider and paste your API key in Settings. It is stored in your browser only and sent **directly from your browser to that provider** (these three all allow direct browser calls) — it never reaches this app's server and is never stored anywhere else. Removable anytime in Settings.\n  - **Server key**: set `ANTHROPIC_API_KEY`, `OPENAI_API_KEY` or `GEMINI_API_KEY` in `.env.local` (self-hosting). When several are set, priority is Anthropic \u003e OpenAI \u003e Google.\n\n  **Fallback**: without any key, a notice appears and template lessons keep working.\n- **Board themes \u0026 pieces** — Colorful piece set and 12 board themes (ported from the chess-game project), selectable in Settings.\n- **Settings** — language, board theme, usernames, number of games to analyze, engine time per position, clear local data\n\n## Project docs\n\n- **`docs/POST-MVP-GUIDE.md`** — read this first before extending the app (vision, phases: IndexedDB → DB + auth → Stripe → AI lessons, conventions, known pitfalls). Written to orient future AI coding sessions.\n- **`docs/teaching-principles.md`** — the pedagogy rules the lesson generator follows.\n\n## License\n\nMIT — see [LICENSE](./LICENSE). Stockfish (GPL-3.0) is not distributed in this repo; it is fetched from npm at install time and runs locally in your browser.\n\n## Notes\n\n- Data lives in this browser only (per device). Clearing site data clears your analysis.\n- Chess.com accuracy values are kept when available; otherwise a lichess-style accuracy is computed from engine evals.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fln-dev7%2Fchess-coach","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fln-dev7%2Fchess-coach","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fln-dev7%2Fchess-coach/lists"}