Web-версия: https://mark3543634.github.io/preflop-trainer/
Лендинг и APK-раздел: https://mark3543634.github.io/preflop-trainer/landing/
Бесплатный офлайн-тренажёр префлопа: обучающий путь в стиле Duolingo и песочница для самостоятельных drills. Приложение написано на React Native, Expo Router и TypeScript strict; Android — первая целевая платформа.
Стратегия полностью data-driven: движок читает действия, частоты и опциональный
EV из RangeNode и не содержит условий для отдельных рук.
Публичная сборка включает только диапазоны с подтверждённым правом распространения:
pekarstas— community charts из AHTOOOXA/poker-charts, MIT;greenline— тот же лицензированный источник, MIT.
Это общественные чарты, а не документированные solver runs. Поэтому интерфейс
не называет их «exact GTO», не придумывает EV и не показывает bb/100 без EV и
достоверной частоты возникновения спота. Полные сведения находятся в
THIRD_PARTY_NOTICES.md и
src/data/ranges/range-sources.json.
Pekarstas импортируется из raw JSON без потери многоцветных ячеек и исходных
высот: условные советы больше не превращаются в выдуманные 50/50. Для
vs_3bet и vs_4bet генератор раздаёт только руки, которые достигают узла через
родительский диапазон. Проценты community-чартов обозначаются как совпадение с
чартом, а RNG применяется только к будущим подтверждённым solver-частотам.
Импортеры локальных TexasSolver/Pio-экспортов сохранены в scripts/, но их
результаты записываются в игнорируемую папку .local/ и не входят в release.
Требуется Node.js 22.
npm install --legacy-peer-deps
npx expo start
npx expo start --webПосле npx expo start приложение можно открыть в Expo Go на поддерживаемом
телефоне. Web-preview доступен клавишей w.
npm run typecheck
npm run lint
npm test -- --runInBand
npx expo-doctor
npm run export:web
npm run checknpm run check запускает TypeScript, ESLint и Jest с coverage. CI дополнительно
проверяет Expo Doctor, static web export и отсутствие локальных solver-паков в
публичном bundle.
- 169 канонических рук и sampling с весами 6/4/12 комбинаций;
- grading: best / correct / inaccuracy / blunder, RNG и EV-ready расчёт;
- песочница по реально доступным format/stack/provider комбинациям;
- путь из 8 юнитов, checkpoint ≥80, unlock gating и mastery;
- очередь ошибок по интервалам 1/3/7 дней;
- provider-aware presets, review и per-node stats;
- XP, streak, уровни и явно обозначенная локальная mock-лига;
- Exam mode с лимитом ошибок и досрочным summary;
- 13×13 heatmap и приоритеты повторения;
- schema v2 для AsyncStorage и экран гидрации.
Сейчас данные покрывают cash_6max на 100 BB. MTT и 40/20/12 BB видны как
будущие режимы, но не запускаются без диапазонов. Squeeze доступен только если
соответствующий узел действительно есть в выбранном паке.
В eas.json настроены профили:
development— внутренний тестовый APK;preview— устанавливаемый APK;production— будущий Google Play AAB.
Для ручной сборки:
npx eas-cli login
npx eas-cli build:configure
npx eas-cli build --platform android --profile previewRelease workflow требует GitHub secret EXPO_TOKEN. Тег v* запускает
проверки, EAS Build, вычисляет SHA-256 и прикладывает
preflop-trainer.apk к GitHub Release.
Workflow Сайт собирает Expo Web и публикует тренажёр в корне GitHub Pages.
Статический русский лендинг из site/ доступен по /landing/ и автоматически
подставляет APK, версию и SHA-256 из последнего GitHub Release. До появления APK
кнопка честно показывает «APK готовится».
Код проекта распространяется по MIT License. Сторонние данные сохраняют свои лицензии и уведомления.