Everything you need to know before your first match night.
The Village Pool League is a casual but competitive 8-ball pool league. Teams of five players compete weekly over a 20-week season, with playoffs deciding the season champion. VPL uses a digital system for stats, scheduling, and live match-night scoring โ accessible from any phone or computer.
The main web app. Used year-round by all members for stats, standings, leaderboards, schedules, and profiles. Admins manage the whole league here.
portal.html โA dedicated mobile app used only on match night. Runs attendance, draw, lag, live scoring, dual sign-off, and MVP voting. Results sync to the Portal automatically when locked.
vpl-scorecard.html โWhen a scorekeeper submits a match from the Scorekeeper, the result is saved automatically. The next time anyone opens the League Portal, the Match History page and the Dashboard both show the new result โ no manual entry needed. The portal auto-refreshes whenever you switch back to its browser tab.
There's no separate "Scorekeeper" account anymore. Any active player can open the Scorekeeper for a scheduled match and take attendance. Once attendance is in, the players present pick one scorekeeper from each team โ those two then score the match independently on their own devices for the rest of the night, and the app compares their two records after every game, flagging anything that doesn't match so it can be caught immediately instead of after the fact. Everyone else who opens the same match sees a live, read-only view of the score as it happens. A player on either team can request to take over their own team's scorekeeper slot if it needs replacing mid-match โ the current scorekeeper for that side approves or declines, or can release it directly once that request comes in. See Match Night Flow for the full walkthrough.
Admins and Superadmins can toggle "View as Player" from the header to preview the portal exactly as a regular player sees it โ useful for checking what's visible before rolling out a change. Toggle it off to return to your real permissions.
Season setup, Team Builder, User Management, Schedule Manager, score overrides, the Audit Log, and posting announcements all have their own walkthrough in the separate Admin Guide โ this manual covers what every player needs, that one covers running the league.
Every member has a real account tied to their username. New accounts start on a role-based default password and are prompted to set their own private password the first time they log in.
After signing in on a default password, a "set your own password" prompt appears. You can dismiss it and finish later, but you'll see it again on every login until you set a private password. Admins can force-reset any account back to its role default from User Management if someone gets locked out.
My Profile has a ๐ CHANGE PASSWORD button, so you're not stuck with whatever you set at first login โ use it whenever you want to update your password.
The official rules used by the Scorekeeper. All scorekeepers must know these before match night.
Each week one home team plays one away team. The match consists of five individual player-vs-player contests (one per player per team), played sequentially โ each contest runs to completion before the next one begins.
In an effort to promote good sportsmanship and a friendly playing atmosphere, please observe these rules of conduct when playing.
Playing too slowly or delaying the game can cause the evening to run late. The following guidelines help keep the total game time to a maximum of three hours:
Third parties are not to interfere with the game. If a player has a question about a rule or the shot to be taken, it should be addressed to the opposing player first. If players cannot resolve an issue, the team captains or other designated players should be called to assist.
If a player scheduled for the last match is not present when their match is called, a maximum wait of ten minutes is allowed before a forfeit score of 30 to 0 is assessed.
Players must be at least nineteen years of age because of liquor laws (L.L.B.O.).
The official rules governing every individual game of 8-ball.
Lag (to decide who breaks): both players simultaneously shoot a ball from behind the head-string, banking it off the foot rail and back toward the head of the table. Striking the head rail is fine; touching a side rail or a pocket loses the lag; if the two balls touch each other, redo the lag. Closest to the head rail wins the choice to break. After the first game, the break alternates.
Racking: after the home team racks the balls, the breaking player gets the option to set the rack. The 8-ball goes in the center of the triangle; the front ball sits on the foot spot.
Hit one of your own suit first, and either pocket a numbered ball or send some ball into a rail. Banks, combinations, and caroms must be called โ though a called ball may still clip either rail attached to the pocket without that rail needing to be called separately. Sink your called ball(s) and keep shooting; miss and it's a loss of turn.
Loss of turn only:
Loss of turn + ball-in-hand anywhere for the opponent (get their consent before touching the cue ball):
Pocket every ball of your suit, then legally pocket the 8-ball. Games are played consecutively until one player wins two โ scoring 1 point per suit ball, 8 points for the 8-ball itself (this feeds directly into the app's point totals described below).
Ask your opponent first. If you can't agree, call in the team captains โ their decision is final. See Handling Disputes in the Scorekeeper Guide for what to do once a match is already underway on the Scorekeeper.
The winner always earns 15 regardless of how efficiently they played. This keeps individual averages meaningful as a pure performance measure, while the loser's ball count serves as a secondary ranking tiebreaker.
Individual players are ranked in this exact priority order:
Team standings use the same logic applied to the team's combined totals.
| Option | How It Works | When to Use |
|---|---|---|
| Pick a Spare | Select from the league's spare pool. The spare fills that player's slot for the night. | Preferred โ brings in a fresh player |
| Double Up | A present teammate plays two contests. Their scores count separately for each. | When no spare is available |
Spare players' scores count toward their own spare standings. A player who doubles up accumulates stats from both contests in their regular season record.
How to use the League Portal to track your performance year-round.
rolandl, rolandf).vpl2026Your session stays signed in across visits โ you won't need to log in again on the same browser unless you sign out.
Save the portal to your phone's home screen. On iPhone: Share โ Add to Home Screen. On Android: tap โฎ โ Add to Home Screen.
The Dashboard is your home screen after login. It shows:
The My Stats page shows your complete season record. Toggle between the current season, past seasons, and Lifetime at the top.
The match history table shows every week of the current season: your game scores, opponent score, result, attendance status (Played / No Show / BYE), and any MVP nominations.
The My Profile page lets you update your display name, email, pronouns, phone, and bio. Changes save to your account immediately.
| Category | Ranked By |
|---|---|
| Best Average | Points per game (descending) |
| Most Wins | Total games won with win % bar |
| Points For | Total season points with differential |
| MVP Leaders | Total MVP nominations received |
| Most Improved | Last season's avg vs this season's avg โ biggest positive change |
| Lifetime | Career average across all seasons |
Both the Dashboard and My Stats pages have a ๐ Achievements card showing every badge you've unlocked, plus locked badges still in progress. Career badges are earned once and stay earned forever. Season badges reset with each new season and can be earned again โ use the season picker on the card to check any past season.
| Badge | Scope | How to Earn It |
|---|---|---|
| ๐ฑ First Blood | Career | Win your first game |
| ๐ฏ Sniper | Career | Win a game without your opponent sinking a ball |
| ๐ Veteran | Career | Play 69 matches across your career |
| ๐ฏ Century | Career | Score 100 total points across all matches |
| ๐ข Comeback Kid | Season | Win a contest that goes the distance (2-1) |
| โก Hot Hand | Season | Win a contest 2โ0 |
| ๐ฅ On Fire | Season | Win 3 contests in a row |
| ๐ Diamond Hand | Season | Win 5 contests in a row |
| โญ MVP | Season | Earn an MVP nomination |
| ๐ Triple Star | Season | Earn 3 MVP nominations |
| ๐ Regular | Season | Play 3 matches |
| โ Qualifier | Season | Play 15 matches โ the league's own threshold for year-end ranking eligibility |
| ๐ Closer | Season | Win 10 games |
Admins can post a "Weekly Achievements Digest" announcement that calls out anyone who newly unlocked a badge in the last 7 days โ keep an eye on Announcements after match night.
The most important job on match night. Read this section carefully before your first time running the scorecard.
Each match has two scorekeepers โ one from each team. You are jointly responsible for:
Each scorekeeper confirms and picks their MVP independently on their own device. The match locks and submits automatically the moment both have confirmed โ there's no separate submit button. If there is a discrepancy, use the EDIT button at Sign-off to re-pick the specific game that's wrong before confirming.
Open vpl-scorecard.html on your device and pick the two teams and the date. Whoever gets there first takes attendance; once it's in, the players present pick one scorekeeper from each team. Both of those two players then run the rest of the match โ attendance, the draw, and scoring โ independently, each on their own device. Anyone else who opens the same match sees a live, read-only view instead, with a button to request taking over their own team's scorekeeper slot (that side's current scorekeeper approves or declines). The app walks each scorekeeper through five phases on their own screen:
The draw screen shows the random pairing before either scorekeeper begins scoring. โบ RESHUFFLE draws again at random. โ EDIT MATCHUPS switches to a manual view with โฒโผ arrows next to each player โ move a name up or down to change who they're paired against and which match number they're playing. Either scorekeeper can do this (or an admin); it's shared to both devices the same way the rest of the draw is. Once BEGIN MATCH is tapped, the pairing is locked in for both sides.
The paid status for every slot is submitted with the match and appears on the portal's Match History cards ("๐ต MATCH FEES โ 8/10 ยท 2 UNPAID"). Admins can export a full payment ledger as CSV from the Data Migration panel for treasury reconciliation.
Before each contest, both players simultaneously shoot the cue ball the length of the table and back. The player whose cue ball comes to rest closest to the head rail wins the lag and may choose to break or pass.
In the app, the lag screen appears automatically before each of the five contests. Tap the name of the player who wins the lag โ they are recorded as the breaker for Game 1.
The lag winner breaks Game 1. After that, the break simply alternates โ the lag loser breaks Game 2, and if there's a Game 3, it goes back to the lag winner โ regardless of who actually won the previous game. The app tracks this automatically โ you only enter the lag winner once at the start of each contest.
Once the game itself is finished at the table, record it on the scoring screen in two taps: pick which player won, then enter how many balls the loser sank (0โ7) โ including a win where the opponent fouled on the 8-ball, since that's scored exactly the same way. The winner's score is always 15, so nothing more to enter there. Recording a game moves straight to the next one automatically; once someone reaches 2 games won, the match-won screen appears.
Before you enter the loser's ball count, "โ Change winner" backs out of that pick. Once a game's recorded, it's part of the record โ use Sign-off's EDIT button afterward if it needs correcting (see Handling Score Mismatches below).
Since each scorekeeper has been playing on their own device, sign-off is where the two records get checked against each other before anything is locked in.
Because both scorekeepers score independently, the app checks their two records against each other after every completed game โ not just at the end. If they disagree, a warning banner appears naming the specific match and game and showing both recorded scores. The banner doesn't block you from continuing to the next match โ it's a heads-up, and the actual fix lives at Sign-off.
Confirming is disabled while a mismatch is outstanding, but it's still on both scorekeepers to actually compare and agree before confirming โ the app can only catch that the numbers differ, not which one is right. Once a match is submitted, correcting it requires an Admin Override, which creates a permanent audit log entry.
Playoffs, awards, and rolling over to the next season.
The top 6 teams advance after the regular season. The top 2 teams receive first-round BYEs. The format is two-round single-elimination. Playoff scoring is identical to regular season โ five sequential contests, full scorecard flow.
The Admin marks the current season complete in League Config. All stats are permanently archived as lifetime data. A new season is then created โ rosters reset, schedule regenerates, season stats start from zero. Lifetime stats accumulate automatically.
As long as player accounts stay linked across seasons, the portal calculates career averages, wins, and points by summing all historical records. No manual migration needed.
Before you tap the loser's ball count, "โ Change winner" backs out and lets you re-pick. If you've already moved on, fix it from Sign-off's EDIT button once the match is done โ pick the correct winner for that specific game and re-enter the loser's balls, no need to redo the rest of the contest. You cannot fix it at all after the match is locked โ contact your Admin for an override if needed.
Yes โ anyone who opens the Scorekeeper for a match that already has both scorekeepers assigned sees a live, read-only view instead of the Setup screen: each team's scorekeeper name, whether their two records agree so far, and how many games differ if they don't. If a side's scorekeeper slot isn't claimed yet, an eligible player on that team sees a CLAIM THIS SLOT button there instead. If it's already claimed by someone else, eligible teammates see a REQUEST TAKEOVER button โ the current scorekeeper for that side gets a prompt to approve or decline, plus a one-tap Release button as an alternative to approving. Only the two actual scorekeepers can enter scores; everyone else stays in the live, read-only view until they take over a slot.
Both scorekeepers observe the lag together. If there is genuine uncertainty, a re-lag is the fairest option โ this is at the scorekeepers' discretion. The scorekeeper records whichever result both parties accept.
The app autosaves your progress on that device as you score. A refresh or an accidental tab close recovers exactly where you left off โ you don't need to re-enter anything. Only the final locked submission is written to the shared league database; everything before that point is a local save on the device you're using.
MVP nominations are final once locked. If entered incorrectly, contact an Admin for an override with a correction note.
Once a match is locked, the result is saved to the shared league database immediately โ it's visible to everyone, on any device, the next time they load the portal. The Dashboard and Match History both also auto-refresh whenever you switch back to that browser tab.
A teammate taps Request Takeover from their own device; the leaving scorekeeper gets a prompt to approve or decline it, and control transfers immediately on approval. A ๐ช RELEASE MATCH button also appears on the leaving scorekeeper's screen the moment that request comes in, as a one-tap alternative to the approve prompt. The button only shows up once someone has actually requested to take over โ there's no standing way to release a side with nobody lined up to receive it. Nothing already scored is lost either way, and the other team's scorekeeper isn't affected.
Any active player can open the app and take attendance. From there, one scorekeeper per team is picked from the players present โ only those two get edit access for the rest of the match, each on their own device. Everyone else, including teammates who weren't picked, sees a live read-only view.