A short name for your organization. Used to log in.
📬
Check Your Email
We sent a confirmation link to:
Click the link in that email to activate your account, then come back here to sign in.
Enter your email or username and we'll send a password reset link.
—
🥍
View Your Player Stats
Enter the email your coach has on file. We'll send you a one-tap link — no password needed.
Don't see your stats? Ask your coach to add your email to your career profile.
📬
Check Your Email
A magic link has been sent.
LAXBENCH
YOU'VE BEEN INVITED
Loading invite details...
Letters, numbers, underscores only. This is how you'll log in.
Powered by LaxBench
ADD TO HOME SCREEN
Install LaxBench for quick access — no app store needed.
1. Tap the Share button △ at the bottom of Safari
2. Tap Add to Home Screen then Add
🥍 Team Demo — Changes won't be saved.
LAXBENCH
📋 COACH
👤 PLAYER
—
—
▼
+ New Team / Season
🥍 Team Demo — Explore freely. Changes won't be saved.
Roster
0 Players
Attendance
Practice Sessions
Games
0-0
Season Stats
—
Leaderboards
Outstanding Equipment Loans
Career Stats
All-Time Profiles
Link the same player across teams and seasons to see combined career totals.
Setup
Organization
When off, Impact Scores are hidden everywhere on screen but still calculated. Player stat exports always include Impact Scores.
Current Team
Appearance — saved per team
Color Theme
Custom Colors
Background
Accent
Coaching Staff Access
Invite coaches or stat trackers to your organization. They'll receive an email to create their own login — you won't share credentials.
Loading...
⚠ Database setup needed — the org_coaches table may be missing or have incorrect RLS policies. Run the SQL below in your Supabase SQL editor:
-- Run this entire block in Supabase SQL Editor
CREATE TABLE IF NOT EXISTS org_coaches (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
owner_user_id uuid REFERENCES auth.users(id) ON DELETE CASCADE,
coach_email text NOT NULL,
coach_user_id uuid REFERENCES auth.users(id) ON DELETE SET NULL,
status text NOT NULL DEFAULT 'pending',
invited_at timestamptz DEFAULT now()
);
ALTER TABLE org_coaches ENABLE ROW LEVEL SECURITY;
-- Drop existing policies first (safe re-run)
DROP POLICY IF EXISTS "owner_all" ON org_coaches;
DROP POLICY IF EXISTS "coach_read" ON org_coaches;
DROP POLICY IF EXISTS "coach_update" ON org_coaches;
DROP POLICY IF EXISTS "anon_pending_read" ON org_coaches;
-- Recreate policies
CREATE POLICY "owner_all" ON org_coaches FOR ALL
USING (auth.uid() = owner_user_id)
WITH CHECK (auth.uid() = owner_user_id);
CREATE POLICY "coach_read" ON org_coaches FOR SELECT
USING (auth.uid() = coach_user_id OR auth.uid() = owner_user_id);
CREATE POLICY "coach_update" ON org_coaches FOR UPDATE
USING (auth.uid() = coach_user_id OR auth.uid() = owner_user_id);
CREATE POLICY "anon_pending_read" ON org_coaches FOR SELECT TO anon
USING (status = 'pending');
Player Account
Want to also track stats for a specific player? Enable a Player Account on this login — no second email needed.
Danger Zone
LAXBENCH
Admin Dashboard
PLATFORM METRICS
PLAYER PORTAL LOOKUP
Search a player email across all orgs to update or remove portal access.
ORGANIZATIONS
⚡ IMPACT SCORING WEIGHTS
Adjust the "1 of X" divisor for each stat. Changes apply retroactively across all teams, seasons, and games instantly.
Player Accounts
Loading...
My Players
Games
Career
Add Player to Track
Log Game
–
Stats
Welcome Back!
Your account has both a Team Account and a Player Account. Which would you like to open?
You can switch between modes from the menu at any time.
New Team / Season
Add Player
Edit Player
New Session
Edit Session Notes
Add Game
Track Game
Us
0
—
Them
0
OUR TEAM
OPPONENT
CLEARS & RIDES
CLEARS
—
No attempts yet
RIDES
—
No attempts yet
GAME LOG
Attendance
Link Career Profile
Create or update a career profile by selecting the same player across different teams and seasons.