How jzhen03/pokerpete works
PokerPete is a local-first heads-up poker study app. Players explore and save ranges, predict opponent ranges, calculate equity, request preflop solutions, and practice with trainer spots. The frontend selects study panels and calls a FastAPI backend; backend routes dispatch to poker engines and, where needed, SQLite-backed persistence or cached solutions. The README also names postflop analysis and hand-history review, but the supplied tree has no identifiable implementation modules for those capabilities, so they are not represented as implemented subsystems. Backend internals are partly unsampled; uncertain links are omitted.
Main entry points: client.ts API client · ranges.py Range operations · App.tsx Study tabs · main.py FastAPI app
Components 27
Study interface
- Study tabs
frontend/src/App.tsx - Range explorer
frontend/src/components/RangeExplorer/RangeExplorer.tsx - Range grid
frontend/src/components/RangeGrid/RangeGrid.tsx - Range predictor
frontend/src/components/RangePredictor/RangePredictor.tsx - Equity panel
frontend/src/components/EquityPanel/EquityPanel.tsx - Trainer panel
frontend/src/components/Trainer/Trainer.tsx - API client
frontend/src/api/client.ts - API types
frontend/src/api/schema.ts
HTTP API
- FastAPI app
backend/src/pokerpete/main.py - Ranges routes
backend/src/pokerpete/api/routes_ranges.py - Predict route
backend/src/pokerpete/api/routes_range_predictor.py - Equity route
backend/src/pokerpete/api/routes_equity.py - Solver routes
backend/src/pokerpete/api/routes_solver.py - Trainer routes
backend/src/pokerpete/api/routes_trainer.py
Poker engine
- Card model
backend/src/pokerpete/engine/cards.py - Range operations
backend/src/pokerpete/engine/ranges.py - Equity calculation
backend/src/pokerpete/engine/equity.py - Preflop equity matrix
backend/src/pokerpete/engine/preflop_equity_matrix.py - Push-fold solver
backend/src/pokerpete/engine/preflop_solver.py - Preflop tree solver
backend/src/pokerpete/engine/preflop_tree_solver.py - Range prediction
backend/src/pokerpete/engine/range_predictor.py - Trainer logic
backend/src/pokerpete/engine/trainer.py
Local persistence
- DB sessions
backend/src/pokerpete/db/session.py - Saved ranges
backend/src/pokerpete/db/saved_ranges.py - Solver cache
backend/src/pokerpete/db/solver_cache.py - SQLite models
backend/src/pokerpete/db/models.py
Other components
- Player
Connections 48
- Player → Study tabs: uses
frontend/src/App.tsx - Study tabs → Range explorer: renders
frontend/src/App.tsx - Study tabs → Range predictor: renders
frontend/src/App.tsx - Study tabs → Equity panel: renders
frontend/src/App.tsx - Study tabs → Trainer panel: renders
frontend/src/App.tsx - Range explorer → Range grid: renders
frontend/src/components/RangeExplorer/RangeExplorer.tsx - Range predictor → Range grid: renders
frontend/src/components/RangePredictor/RangePredictor.tsx - Study tabs → API client: checks health
frontend/src/App.tsx - Range predictor → API client: requests ranges
frontend/src/components/RangePredictor/RangePredictor.tsx - Range explorer → API client: requests ranges
frontend/src/components/RangeExplorer/RangeExplorer.tsx - Equity panel → API client: requests equity
frontend/src/components/EquityPanel/EquityPanel.tsx - Trainer panel → API client: requests training
frontend/src/components/Trainer/Trainer.tsx - API client → API types: types calls
frontend/src/api/client.ts - API client → FastAPI app: HTTP requests
- FastAPI app → Ranges routes: mounts
backend/src/pokerpete/main.py - FastAPI app → Predict route: mounts
backend/src/pokerpete/main.py - FastAPI app → Equity route: mounts
backend/src/pokerpete/main.py - FastAPI app → Solver routes: mounts
backend/src/pokerpete/main.py - FastAPI app → Trainer routes: mounts
backend/src/pokerpete/main.py - Ranges routes → Range operations: parses ranges
backend/src/pokerpete/api/routes_ranges.py - Ranges routes → Saved ranges: reads and writes
backend/src/pokerpete/api/routes_ranges.py - Ranges routes → DB sessions: gets sessions
backend/src/pokerpete/api/routes_ranges.py - Predict route → Range prediction: predicts
backend/src/pokerpete/api/routes_range_predictor.py - Equity route → Range operations: parses ranges
backend/src/pokerpete/api/routes_equity.py - Equity route → Card model: parses board
backend/src/pokerpete/api/routes_equity.py - Equity route → Equity calculation: calculates equity
backend/src/pokerpete/api/routes_equity.py - Solver routes → Push-fold solver: solves push-fold
backend/src/pokerpete/api/routes_solver.py - Solver routes → Solver cache: gets tree solution
backend/src/pokerpete/api/routes_solver.py - Solver routes → DB sessions: gets sessions
backend/src/pokerpete/api/routes_solver.py - Trainer routes → Trainer logic: grades and samples
backend/src/pokerpete/api/routes_trainer.py - Trainer routes → Solver cache: gets tree solution
backend/src/pokerpete/api/routes_trainer.py - Trainer routes → DB sessions: gets sessions
backend/src/pokerpete/api/routes_trainer.py - Trainer routes → Preflop equity matrix: gets hand classes
backend/src/pokerpete/api/routes_trainer.py - Range operations → Card model: uses card types
backend/src/pokerpete/engine/ranges.py - Equity calculation → Range operations: uses ranges
backend/src/pokerpete/engine/equity.py - Equity calculation → Card model: uses cards
backend/src/pokerpete/engine/equity.py - Preflop equity matrix → Equity calculation: calculates matchups
backend/src/pokerpete/engine/preflop_equity_matrix.py - Preflop equity matrix → Range operations: parses classes
backend/src/pokerpete/engine/preflop_equity_matrix.py - Push-fold solver → Preflop equity matrix: uses matrix
backend/src/pokerpete/engine/preflop_solver.py - Preflop tree solver → Preflop equity matrix: uses matrix
backend/src/pokerpete/engine/preflop_tree_solver.py - Range prediction → Range operations: builds ranges
backend/src/pokerpete/engine/range_predictor.py - Range prediction → Card model: uses cards
backend/src/pokerpete/engine/range_predictor.py - Trainer logic → Range operations: uses ranges
backend/src/pokerpete/engine/trainer.py - Trainer logic → Preflop equity matrix: uses matrix
backend/src/pokerpete/engine/trainer.py - Trainer logic → Push-fold solver: uses solver
backend/src/pokerpete/engine/trainer.py - DB sessions → SQLite models: creates sessions
- Saved ranges → SQLite models: stores range rows
backend/src/pokerpete/db/saved_ranges.py - Solver cache → SQLite models: stores solutions
backend/src/pokerpete/db/solver_cache.py