Skip to content

c17a/umpire-buddy-app

Repository files navigation

Umpire Buddy

Umpire Buddy Logo

License: MIT Expo SDK React Native TypeScript Node.js

A comprehensive tennis scoring app supporting multiple scoring formats including tie-break-only matches, traditional sets, and FAST4 formats. Features live statistics, match history, and export capabilities for tennis players, coaches, and officials.

Features

Scoring Formats

  • Match Tie-break to 10 (win by 2) - ✅ Implemented
  • Best of 3 Tie-breaks (to 7, win by 2) - ✅ Implemented
  • FAST4 & Traditional Sets - 🚧 Coming soon
  • Deciding Point Options - Configurable for tie-breaks

Core Functionality

  • Live Scoring - Point-by-point tracking with automatic serving rotation
  • Match Controls - Undo, reset, and new match options
  • Player Setup - Custom names and first server selection
  • Winner Detection - Automatic match completion

Statistics & History

  • Live Statistics - Real-time serve/return percentages
  • Match History - Browse and search past matches
  • Export Options - Share as PNG images or PDF documents
  • Offline Storage - Local SQLite database

Technologies Used

  • React Native
  • Expo
  • TypeScript
  • Expo Router for navigation
  • SQLite for local data storage
  • Expo Print & Sharing for export functionality

Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js (v18 or higher) - Download here
  • npm (comes with Node.js)
  • Expo CLI - Install globally: npm install -g @expo/cli
  • iOS Simulator (macOS only) - Install Xcode from App Store
  • Android Studio (for Android emulator) - Download here

Notable Dependencies

This project uses several key dependencies:

  • Expo SDK 54 - Cross-platform mobile development
  • React Native 0.81.4 - Mobile app framework
  • Expo SQLite - Local database for match storage
  • Expo Print & Sharing - PDF generation and sharing
  • React Native View Shot - Screenshot capture for exports
  • React Native Reanimated - Smooth animations
  • React Native Gesture Handler - Touch interactions
  • UUID - Unique identifier generation

Installation

  1. Clone the repository:

    git clone https://github.com/eRaz00r/umpire-buddy-app.git
    cd umpire-buddy-app
  2. Install dependencies:

    npm install
  3. Start the development server:

    npm start
  4. Run on a device or emulator:

    • Physical Device: Scan the QR code with the Expo Go app on your phone
    • iOS Simulator: Press i in the terminal (macOS only)
    • Android Emulator: Press a in the terminal

Expo Setup Guide

For Physical Device Testing

  1. Install Expo Go app:

  2. Start the development server:

    npm start
  3. Connect your device:

    • Scan the QR code displayed in your terminal with Expo Go
    • Make sure your device and computer are on the same network

For iOS Simulator (macOS only)

  1. Install Xcode:

    # Install Xcode from App Store or:
    xcode-select --install
  2. Install iOS Simulator:

    # Open Xcode and install iOS Simulator from Preferences > Components
  3. Run on iOS Simulator:

    npm start
    # Press 'i' in the terminal to open iOS Simulator

For Android Emulator

  1. Install Android Studio:

  2. Create an Android Virtual Device (AVD):

    • Open Android Studio
    • Go to Tools > AVD Manager
    • Click "Create Virtual Device"
    • Choose a device (e.g., Pixel 6) and Android version (API 33+)
    • Click "Finish"
  3. Start the emulator:

    # Start your AVD from Android Studio or:
    emulator -avd <your_avd_name>
  4. Run the app:

    npm start
    # Press 'a' in the terminal to open Android emulator

Development Commands

# Start development server
npm start

# Start with cache cleared
npm start -- --clear

# Run on iOS simulator
npm run ios

# Run on Android emulator
npm run android

# Build for production
npm run build

# Run tests
npm test

# Lint code
npm run lint

Troubleshooting

Common issues and solutions:

  • Metro bundler issues: Try npm start -- --clear to clear the cache
  • iOS Simulator not opening: Ensure Xcode is installed and iOS Simulator is available
  • Android emulator issues: Make sure Android Studio is installed and an emulator is created
  • Node version conflicts: Use nvm to manage Node.js versions: nvm use 18
  • Expo CLI not found: Reinstall globally with npm install -g @expo/cli
  • Port already in use: Kill the process using port 8081: npx kill-port 8081

Contributing

We welcome contributions! Please see our Contributing Guidelines for details on how to:

  • Report bugs and suggest features
  • Set up your development environment
  • Submit pull requests
  • Follow our code style guidelines

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Designed for parents and coaches of young tennis players

  • Built with ❤️ using React Native and Expo

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors