LiveStats Engine™
Initializing Console...
Connecting to server...

LIVESTATS ENGINE™

Georgia Motorsports Media

Organization
Loading...
Last Sync
Never
Server: Online
Event Workspace
Create new events and keep tonight's work organized
Ready to start?
Launch the event builder to create a fresh sheet.
Your Events
Select an event to work with
View:
Filter:
Sort:
Available Classes
Loading classes...
🏁
No classes loaded. Please sign in to view classes.
Organization Roster
Loading roster from Local Database...

Roster data is loaded from the Local Database.

Pre-Event Stats
0
Vehicles
0
Classes
0
Members
0
Non-Mbrs
0
Avg/Class
--
Largest
--
Smallest
0%
Fill Rate
Class Order Tonight
Event Lineup
Manage vehicle order and class grouping
📋
Select an event to view the lineup.
Class order tonight
Current Hook
-
-
00:00
On Deck
-
-
Staging
-
-
Class lineup • Select class
Hook flags (choose one if applicable)
Live Leaderboard
Select a class
Place Truck Dist Speed Edit
Select a class to view leaderboard
⏱️ Pace & Timing
Last hook: --:--
Average: --:-- between hooks
Fastest hook: --:--
Slowest hook: --:--
  • No hooks recorded yet
LiveStats
Event stats and selected class
📊 Event Stats
Total Trucks
0
Classes
0
Trucks Pulled
0
Remaining
0
DQs
0
Sled Distance
0 ft
Avg Distance
0 ft
Avg Speed
0 mph
Event Progress
0%
Select a class to view detailed stats
Export Results
Download final results and standings
Export Lineup
Download event lineup with draw order
Export Class Pulling Order
Download pulling order for each class
Export Event Stats
Download statistical summaries and reports
Export Raw Data
Download all event data for backup or analysis
Public Results Link
Share live-updating results with your audience
Website Embed Code
Embed live results on your website
Settings
Customize look & feel and preferences

Organization Rules

Configure point system and membership settings

Styling & Appearance

Customize theme, colors, and interface density

🎉 Celebration Popups

Configure celebration notifications

General Settings

Configure lineup and draw settings

Export Column Settings

Choose which columns to include in exports

Connect external hardware or services to LiveStats.

🔴 Laser Distance Reader

Enter the plain-text data endpoint URL from your laser system (not the overlay page). The server fetches this on your behalf so no CORS issues apply. Example: https://sheet-a2.pullingworld.workers.dev/

Prepare offline backups so you can keep scoring if the internet drops or something glitches. Your data saves locally and can be synced back to the server when you're online again.

🟢 Online Pending:

💡 Print Scoresheet before every event as a paper backup. If things go sideways, open the Offline Grid and type results there — they'll save to your device and you can sync to the server later.

Reload all data from cloud without logging out


Settings saved to server automatically.

Support & Help

Get help with LiveStat and contact our team

Navigation Guide

LiveStats Engine™ is organized into three main sections: Setup (configure your organization), Live (run events in real-time), and System (manage settings and access support).

⚙️ Setup Navigation

Configure your organization's foundational data

📅 Event

Configure event details like name, date, location, and organizer information. Set up point systems for championship tracking. This is where you define the specifics of each pulling event.

🏆 Classes

Define your organization's competition categories (e.g., "V8 Tractor", "2WD Modified", "Pro Stock"). Create and manage your master list of classes. Use + Add Class to create new classes or archive unused ones. Toggle 📦 Show Archived to restore archived classes.

🚗 Roster

Your master database of all vehicles and drivers. Add trucks with membership numbers, vehicle names, make/model, driver info, and class assignment. Use + Add Vehicle to Roster to create entries. Click any vehicle card to edit or delete. This roster feeds into your event lineups.

📡 Live Navigation

Run and manage live events in real-time

📋 Lineup

Build tonight's event lineup by selecting trucks from your roster and assigning draw numbers. Search for vehicles/drivers to auto-fill details. Click 🎲 Random Draw for automatic assignment. Drag class chips in the Class Lineup Order section to set the pulling order. Lineup syncs automatically to Live Event.

🚜 Live Event

Real-time event control center. Click a class pill to start recording pulls. The lineup rail shows trucks in draw order with color-coded status (gray=upcoming, blue=current, green=complete). Enter Distance and Speed, apply flags (DQ, Dropped Hook, Exhibition), then hit Submit hook to leaderboard. System auto-advances to next truck. Track pace with timing stats.

🏆 Results

View final standings with automatic ranking by distance. Results organized by class with color-coded podium positions (🥇 Gold, 🥈 Silver, 🥉 Bronze). Shows place, truck, driver, distance, speed, and points. Flagged entries appear at bottom. Updates in real-time as you submit hooks. Perfect for displaying on screens or projectors.

📤 Export

Export your results and lineup data in multiple formats. Download as CSV for spreadsheet analysis, PDF for professional reports, or JPG for social media sharing. Export settings can be configured in the Settings tab to control which columns are included.

🔧 System Navigation

Manage app preferences and get support

⚙️ Settings

Personalize your LiveStats experience. Styling & Appearance: Choose color themes (Purple, Blue, Pink, Teal, Neutral variants), select UI density (Compact/Comfortable), and control scrollbar visibility. Export Columns: Toggle which columns appear in exports. All settings save automatically to your browser.

📞 Support

Access help resources, contact support, view system information, and read patch notes. Find detailed navigation guides, links to documentation and FAQs, your current version and browser info, plus complete changelog of features and improvements. Start here if you need assistance or want to learn what's new.

🚪 Logout

Sign out from your account and disconnect from your data. You'll need to sign in again to access LiveStats Engine™ and sync with your database.

Contact Support

Need help? Have a question? We're here to assist you.

System Information

Version: v1.0.2
Browser: Loading...
Last Updated: November 2025

Patch Notes

v1.0.2

December 6, 2025

🐛 Bug Fixes:

  • Results Tab Placement: Fixed blank placement display in Results tab - now uses same fallback logic as Live Leaderboard.
  • Edit Result Modal: Restored "Place (manual override)" field that was accidentally removed.
  • Hook Submission: Fixed issue where Place/Points were being cleared before recalculation.

✨ Improvements:

  • State Dropdown: Roster create/edit now uses a dropdown for US states instead of free text input.
  • Roster Updates: Fixed 401 authentication error when updating roster members.
Beta 1.1.0 November 25, 2025

🚀 MAJOR OVERHAUL: Viewer App 2.0

Complete rewrite of the public results viewer for maximum performance and reliability during the season.

Read Full Details →

🧪 BETA LAUNCH: Input Console

Now open for public sandbox testing. Includes backend optimizations and critical bug fixes.

Read Full Details →

📱 Viewer App 2.0:

  • Client-Side Processing: Moved heavy math (points, averages, sorting) to the user's device to save server CPU.
  • Season Log: New "Season Log" view with color-coded status text for DQ (Red), Dropped Hook (Amber), and Exhibition (Blue).
  • Event Detail Pages: Completely redesigned event pages with "Total Hooks" and "Full Pulls" stats.
  • Performance: Optimized for high-traffic "pulling season" loads.

🔧 Backend & Infrastructure:

  • Server Optimization: Prepared codebase for 2 vCPU production environment.
  • Stability: Fixed syntax errors and race conditions in the viewer script.
  • Footer: Unified footer design across Console and Viewer for consistent branding.

🐛 Bug Fixes:

  • Fixed "Total Hooks" showing as undefined in class pages.
  • Fixed `getSpeed` reference error causing viewer crashes.
  • Fixed points calculation logic to correctly filter non-points events.
  • Fixed syntax errors causing event pages to fail loading.
v0.8.5-beta November 19, 2025

🚧 Beta Status: Preparing for Pulling Season Launch

Making great efforts to get LiveStats Engine™ released in time for pulling season. Still not open to the public - stay tuned!

🖥️ Backend Server Infrastructure:

  • Full Node.js/Express backend server implementation
  • RESTful authentication API with JWT token-based session management
  • API endpoints: /api/auth/signup, /api/auth/login, /api/auth/me
  • Secure bcrypt password hashing (10 rounds)
  • Server-side validation and error handling
  • MongoDB integration for user data persistence
  • CORS configured for cross-origin requests

🔐 Authentication System Overhaul:

  • Username-based login system (stored in user.email field)
  • Separate email field (user.userEmail) for Stripe payment receipts
  • Dual-field signup form: Username + Email
  • JWT tokens stored in localStorage for persistent sessions
  • Auto-login on page load if valid token exists
  • Backwards compatibility for legacy accounts
  • "Remember Me" functionality with token expiration

💰 Token Economy Changes:

  • Stripe integration for token purchases
  • Token balance displayed in dashboard

🎨 UI/UX Enhancements:

  • Signup form redesigned to fit on one screen (no scrolling required)
  • Events tab with powerful search by name or location (real-time filtering)
  • Six filter options: All Events, Active, Today, Upcoming, Past, Canceled
  • Three view modes: List (grouped by status), Grid (responsive cards), Calendar (grouped by month)
  • Sort options: Date ascending/descending, Name A-Z/Z-A
  • Roster modals (Edit Member, Member Details) optimized with 3-column layout
  • Modal sizing: 1100px width, 95vh height - fills screen without scrolling
  • State dropdowns in Add Vehicle and Edit Vehicle modals (all 50 US states)
  • Compact, readable spacing: 13px fonts, 10px gaps, 7-10px padding

🔧 Technical Improvements:

  • Event listeners for search, filter, view mode, and sort controls
  • State management for events: viewMode, filter, searchTerm, sortBy
  • Responsive grid layout: auto-fill, minmax(320px, 1fr)
  • Calendar view with chronological month/year grouping
  • Type-based event card styling (Practice/Qualifying/Race/Special)
  • Server-side username validation (3-20 characters, alphanumeric + underscore)
  • Password strength requirements (8+ characters)

🐛 Bug Fixes:

  • Fixed Exhibition/Under100ft/TestRun flagged runs disappearing from lineup
  • Fixed flagged runs now remain visible in Results and Live Leaderboard
  • Fixed re-pull logic: now appends new rows when distance exists (preserves original)
  • Fixed state input consistency across all roster forms
  • Fixed modal scrolling issues with optimized dimensions
  • Removed duplicate membership number validation
  • Fixed archivedRepulls array population for instant display
v0.7.0-beta November 16, 2025

💳 Stripe Payment Integration:

  • Complete Stripe Checkout integration for event token purchases
  • Secure payment processing via Stripe API with webhook verification
  • Automatic token fulfillment after successful payment
  • Payment status tracking and refund prevention for used tokens
  • Professional checkout experience with custom success/cancel pages
  • Backend server (stripe-server.js) handles all payment operations securely

🎯 Enhanced Flag System:

  • Added two new pull flags: "Under 100ft" and "Test Run"
  • Radio button implementation for mutually exclusive flag selection
  • 7 flag options: None, Scratch, Under 100ft, Reset, Test Run, Exhibition, DQ
  • Extended sheet structure from columns A-O to A-Q (added columns P & Q)
  • All flagged hooks now properly display in both Results and Live Leaderboard
  • Flagged pulls sort to bottom but remain visible for record-keeping

🔒 Formula Protection:

  • Complete protection for Place (column I) and Points (column J) formulas
  • All write operations skip or preserve formula columns
  • Clear Hook Data detects formulas vs manual values before clearing
  • Flagged runs append as new rows without touching formula columns
  • Fixed updateNameInAllEvents to write single column only (not full rows)

⚡ Real-Time Updates:

  • Flagged hooks now appear immediately in live leaderboard and results
  • archivedRepulls array properly populated for instant display
  • Live Event leaderboard combines active lineup with archived flagged runs
  • No more refresh required to see flagged hooks

🔧 Technical Improvements:

  • Updated all sheet read operations from A:O to A:Q range
  • Enhanced sort logic to check string 'TRUE' values for flags
  • Improved error handling with toast notifications
  • Better console logging for debugging flagged hooks

🐛 Bug Fixes:

  • Fixed Clear Hook Data "currentEventSheet is not defined" error
  • Fixed columns I & J being overwritten by various operations
  • Fixed flagged hooks not appearing in live displays
  • Fixed Under100ft and TestRun flags not being checked in sort/display logic
v0.6.0-beta November 14, 2025

🎯 Results Management System:

  • Full results editing - click any result row to edit all fields (A-O columns)
  • Formula preservation for Place and Points columns (only updates if values actually change)
  • Clear Hook Data feature - removes distance/speed/flags but keeps truck in lineup
  • Dynamic sheet row finding handles duplicates and re-pulls correctly
  • Edit Result modal with all fields: Draw, Distance, Speed, Place, Points, Member checkbox, and flag checkboxes

✅ Flag System Overhaul:

  • Mutual exclusion - only one flag can be selected at a time (DQ, Scratch, Reset, Exhibition, Drop)
  • Pre-submission validation prevents submitting hooks with multiple flags
  • Custom error modal shows when multiple flags are selected
  • "Drop" renamed to "Dropped Hook (Re-Pull)" for clarity
  • Works across all contexts: Live Event hook submit, Leaderboard edit, Results edit

🎨 UI/UX Improvements:

  • Refresh warning modal redesigned with calmer amber theme (was extreme red/critical)
  • Updated messaging: "Unsaved Changes" instead of "DATA LOSS"
  • Added reassuring tip about automatic syncing in refresh modal
  • Clear Hook Data button in modal (red danger theme, left-aligned)
  • Results table now clickable rows for editing (hover highlight)

🔧 Technical Improvements:

  • Compares form values against original sheet values to detect changes
  • Selective column clearing preserves Place/Points formulas (clears F-H, K-O; keeps I-J)
  • Console logging for mutual exclusion debugging
  • Proper event listener setup with change events on all flag checkboxes

🐛 Bug Fixes:

  • Fixed renderChips/renderLineup undefined errors in results editing
  • Fixed formula overwriting when editing results (now only writes if changed)
  • Fixed multiple flag selection bypassing validation
  • Fixed mutual exclusion not working properly with console debugging added
v0.5.0-beta November 13, 2025

🚀 Major Update - Google Sheets Integration:

  • Full Google Sheets API integration - all data now syncs to cloud
  • Professional login screen with secure OAuth authentication
  • Settings sync across devices via Google Sheets
  • Removed all CSV fallbacks - API-only data management
  • Real-time sync timestamp shows last successful data write to Google Sheets

✨ New Features:

  • Classes Management tab - centralized class list for entire organization
  • Archive/restore system for classes (soft delete with toggle to show archived)
  • Soft delete/restore system for roster members (preserves all data)
  • Restore button in roster view details modal for deleted members
  • Class dropdown in Add Vehicle modal (synced with Classes tab)
  • Updated Roster form with new fields: Phone, Address, Make | Model
  • Connection status indicator (red/yellow/green)
  • Dedicated Logout tab with confirmation screen
  • Enhanced Classes Tab documentation in Support tab

⚙️ Improvements:

  • ALL data operations now sync to Google Sheets immediately (classes, roster, lineup, live results)
  • Sync timer only updates after successful Google Sheets writes (no false updates)
  • Enhanced error handling for Google authentication failures
  • Improved dropdown styling to match themes
  • Classes load before roster for proper dropdown population
  • Professional authentication flow with loading screens
  • Settings persist to Google Sheets for cross-device sync
  • Cleaner UI text (removed technical implementation details)
  • Smart button visibility in roster details (edit/delete vs restore based on status)
  • Secondary button theme styling for archive/delete toggles

🔧 Technical:

  • Google Sheets API with full read/write capabilities
  • Sheet auto-creation if missing (Roster, Lineup, Settings, Classes)
  • Boolean conversion fixes for Google Sheets data types
  • Roster now uses 11 columns (A-K) with Deleted column (YES/NO)
  • Classes sheet uses 2 columns (A-B) with Archived column (TRUE/FALSE)
  • Lineup/Results save to database with 8 columns (Draw, Class, Truck, Driver, Member, Distance, Speed, DQ)
  • All write operations validate success before updating sync timestamp

🐛 Bug Fixes:

  • Fixed duplicate `];` syntax error that was breaking authentication
  • Fixed sync timer continuing to count even after data updates
  • Fixed local-only data changes that weren't syncing to Google Sheets
  • Removed "Robert Young" auto-population placeholder (now uses proper soft delete)
v0.4.0-beta November 2025

New Features:

  • Support tab with help documentation and system info
  • Preset color themes (Purple, Blue, Pink, Teal, Neutral + Neutral variants)
  • Export column customization (choose which columns to export)
  • Multiple export formats: CSV, PDF, JPG
  • Interface density modes: Compact (Mobile) and Comfortable (Desktop)
  • Collapsible settings sections for better organization

Improvements:

  • Class lineup order automatically syncs between Lineup and Live Event tabs
  • Class order chips can no longer be manually deleted (auto-managed)
  • Theme selection now persists and loads on refresh
  • Density button highlighting now matches selected theme
  • Default theme is Purple when no preference is saved

Removed:

  • Light mode (app is now dark mode only)

Older versions archived...