A comprehensive iOS and watchOS application for professional boxing match scoring with real-time round tracking, fighter management, detailed fight statistics, and seamless cross-device synchronization.
- Real-time Round Scoring: Professional 10-point must system with knockdown and point deduction tracking
- Fighter Management: Complete boxer profiles with fight records and corner color customization
- Fight History: Comprehensive fight tracking with detailed statistics and round-by-round breakdowns
- Early Fight End: Handle technical decisions, knockouts, retirements, and injury stoppages
- Official Results: Generate official fight results with unanimous, majority, and split decisions
- Scorecard Sharing: Export and share professional scorecard images with custom messages
- Dedicated Watch App: Full scoring functionality on Apple Watch
- Real-time Sync: Seamless data synchronization between iPhone and Apple Watch
- Watch Connectivity: Score rounds on watch, view on phone instantly
- Haptic Feedback: Comprehensive haptic feedback for all interactions
- Complications: Quick access to current fight status
- CloudKit Integration: Automatic iCloud sync across all devices
- Core Data: Robust local data persistence with CloudKit backup
- Offline Support: Full functionality without internet connection
- Conflict Resolution: Automatic handling of data conflicts
- Real-time Updates: Instant synchronization when online
- VoiceOver Support: Complete accessibility for visually impaired users
- Dynamic Type: Full support for iOS text scaling
- High Contrast: Optimized for high contrast mode
- Haptic Feedback: Comprehensive tactile feedback throughout the app
- Motor Accessibility: Large touch targets and gesture alternatives
- Weight Divisions: All 17 official boxing weight classes with limits
- Penalty Tracking: Knockdown and point deduction history
- Fight Statistics: Comprehensive round-by-round and fight statistics
- Professional UI: Clean, intuitive interface designed for officials
- Splash Screen: Professional app launch experience
Screenshots will be added here
- iOS: 15.0 or later
- watchOS: 8.0 or later (for Apple Watch app)
- Xcode: 14.0 or later
- Swift: 5.7 or later
- iPhone: All devices running iOS 15.0+
- Apple Watch: Series 4 and later (watchOS 8.0+)
- iPad: Full iPad support with optimized interface
- iCloud Account: Required for data synchronization
- Internet Connection: For initial setup and data sync
- Storage: Minimal local storage, data synced to iCloud
-
Clone the repository:
git clone https://github.com/yourusername/BoxingScorecardApp.git
-
Open the project in Xcode:
cd BoxingScorecardApp open BoxingScorecard.xcodeproj -
Build and run the project on your device or simulator.
- iPhone: Tap "New Fight" on the main screen
- Apple Watch: Use the watch app to start scoring (syncs with iPhone)
- Enter fighter names and select corner colors
- Set fight parameters (rounds, weight class, division)
- Begin scoring with the 10-point must system
- 10-Point Must System: Standard boxing scoring system
- Round Navigation: Navigate between rounds using the round selector
- Score Adjustment: Increase/decrease scores for each fighter
- Penalty Tracking: Record knockdowns and point deductions
- Round Notes: Add notes for each round if needed
- Round Completion: Mark rounds as complete to advance
- Dedicated Interface: Full scoring functionality on your wrist
- Real-time Sync: Scores appear instantly on iPhone
- Haptic Feedback: Tactile feedback for all interactions
- Quick Access: Start scoring without reaching for your phone
- Complications: View current fight status from watch face
- Complete All Rounds: For unanimous, majority, or split decisions
- Early End Options: Handle knockouts, TKOs, retirements, injuries
- Official Results: Generate professional fight results
- Statistics: View comprehensive fight statistics
- Professional Images: Generate branded scorecard images
- Multiple Platforms: Share via Messages, Mail, social media
- Custom Messages: Automatically generated fight summaries
- High Quality: 400x600 pixel JPEG images optimized for sharing
BoxingScorecardApp/
├── BoxingScorecard/ # Main iOS app source code
│ ├── BoxingScorecardApp.swift # App entry point and initialization
│ ├── ContentView.swift # Main app view and navigation
│ ├── DataModels.swift # Core data models and enums
│ ├── CoreDataManager.swift # Core Data and CloudKit management
│ ├── PhoneWatchConnectivity.swift # Apple Watch connectivity
│ ├── AppConfiguration.swift # App configuration management
│ ├── TestDataManager.swift # Test data loading utilities
│ ├── AllFightsView.swift # Fight history and management
│ ├── BoxerSetupView.swift # Fighter setup and configuration
│ ├── ScorecardView.swift # Main scoring interface
│ ├── ResultsView.swift # Fight results and statistics
│ ├── Assets.xcassets/ # App icons, images, and colors
│ ├── BoxingScorecard.entitlements # App capabilities and permissions
│ ├── BoxingScorecard.xcdatamodeld/ # Core Data model definitions
│ ├── Info.plist # App configuration and metadata
│ └── Views/ # UI Components and subviews
│ ├── FightHeaderView.swift # Fight information header
│ ├── RoundScoringView.swift # Round scoring interface
│ ├── RoundNavigationView.swift # Round navigation controls
│ ├── EarlyFightEndView.swift # Early fight ending interface
│ ├── EndFightEarlyButton.swift # Early fight end button
│ ├── OfficialResultView.swift # Official fight results
│ ├── ScorecardImageView.swift # Scorecard image generation
│ ├── ScorecardSharingService.swift # Sharing functionality
│ └── SplashView.swift # App launch screen
├── BoxingScorecardWatch Watch App/ # Apple Watch app source code
│ ├── BoxingScorecardWatchApp.swift # Watch app entry point
│ ├── ContentView.swift # Watch app main interface
│ ├── DataModels.swift # Watch-specific data models
│ ├── WatchDataManager.swift # Watch data management
│ ├── ComplicationController.swift # Watch complications
│ └── Assets.xcassets/ # Watch app assets
├── BoxingScorecardTests/ # Unit tests
│ ├── BoxingScorecardTests.swift # Main test suite
│ ├── CoreDataManagerTests.swift # Core Data testing
│ ├── ScoringLogicTests.swift # Scoring logic validation
│ ├── TestConfiguration.swift # Test configuration
│ ├── TestPlan.md # Comprehensive test plan
│ └── README.md # Testing documentation
├── BoxingScorecardUITests/ # UI tests
│ ├── BoxingScorecardUITests.swift # UI automation tests
│ └── BoxingScorecardUITestsLaunchTests.swift # Launch performance tests
├── BoxingScorecardWatch Watch AppTests/ # Watch app unit tests
│ └── BoxingScorecardWatch_Watch_AppTests.swift
├── BoxingScorecardWatch Watch AppUITests/ # Watch app UI tests
│ ├── BoxingScorecardWatch_Watch_AppUITests.swift
│ └── BoxingScorecardWatch_Watch_AppUITestsLaunchTests.swift
├── Documentation/ # Project documentation
│ ├── Add_Capabilities_Guide.md # Adding app capabilities
│ ├── Apple_Watch_Setup_Guide.md # Apple Watch setup
│ ├── Apple_Watch_Accessibility_Guide.md # Watch accessibility
│ ├── CloudKit_Fix_Guide.md # CloudKit troubleshooting
│ ├── CloudKit_Implementation_Guide.md # CloudKit implementation
│ ├── CloudKit_Status_3_Fix_Guide.md # CloudKit status fixes
│ ├── CoreData_CloudKit_Implementation_Guide.md # Core Data + CloudKit
│ ├── Final_Implementation_Summary.md # Implementation summary
│ ├── IMPLEMENTATION_SUMMARY.md # Technical summary
│ ├── iOS_Accessibility_Implementation_Guide.md # iOS accessibility
│ ├── iOS_Accessibility_Testing_Checklist.md # Accessibility testing
│ ├── Scorecard_Sharing_Feature_Guide.md # Sharing feature guide
│ ├── Test_Data_Configuration_Guide.md # Test data configuration
│ ├── Privacy_Policy.md # Privacy policy
│ └── Terms_of_Service.md # Terms of service
├── App Store Images/ # App Store assets
│ ├── Actual App Store/ # Production App Store images
│ └── Simulator Screenshots/ # Development screenshots
├── BoxingScorecard.xcodeproj/ # Xcode project configuration
├── run_tests.sh # Test automation script
├── toggle_test_data.sh # Test data toggle script
├── buildServer.json # Build server configuration
├── LICENSE # MIT License
└── README.md # This file
The app uses Core Data with CloudKit synchronization for robust data management:
-
CDFight: Main fight entity with CloudKit sync
- Fighter information and corner colors
- Fight metadata (date, division, rounds)
- Early fight end details
- Official results and winner determination
- Interruption tracking for app crashes
-
CDRound: Individual round scoring with CloudKit sync
- Round-by-round scores for both fighters
- Knockdown and point deduction tracking
- Penalty history with timestamps
- Round completion status
- Round notes and observations
- Fight: Main fight model with comprehensive statistics
- Boxer: Fighter profiles with corner color customization
- Round: Round scoring with penalty tracking
- Division: All 17 official boxing weight classes
- EarlyFightEnd: Early fight ending types and details
- Real-time Sync: Changes sync instantly across all devices
- Offline Support: Full functionality without internet connection
- Conflict Resolution: Automatic handling of simultaneous edits
- Background Sync: Data syncs in background when app is not active
- Local Storage: Core Data stores data locally for immediate access
- Cloud Upload: Changes automatically upload to iCloud via CloudKit
- Device Sync: Other devices receive updates and sync local data
- Conflict Handling: CloudKit resolves conflicts using timestamps
- Graceful Degradation: App continues working if CloudKit unavailable
- Status Indicators: Clear feedback about sync status
- Retry Logic: Automatic retry for failed sync operations
- User Notifications: Inform users of sync issues when necessary
The project includes comprehensive testing across all platforms and components:
- Core Data Operations: Database operations, data persistence, and CloudKit sync
- Scoring Logic: 10-point must system validation and edge cases
- Data Model Integrity: Model conversion, validation, and consistency
- Fight Management: Fight creation, updates, and completion logic
- Round Scoring: Round-by-round scoring and penalty tracking
- Early Fight End: Knockout, TKO, retirement, and injury handling
- User Workflow Automation: Complete fight flow from setup to results
- Interface Testing: Button interactions, form validation, navigation
- Accessibility Testing: VoiceOver compatibility and dynamic type support
- Performance Testing: Launch times and memory usage
- Cross-Device Testing: iPhone and iPad interface validation
- Watch App Unit Tests: Watch-specific functionality and data management
- Watch UI Tests: Watch interface automation and user interactions
- Connectivity Tests: Phone-Watch communication and data sync
- Haptic Feedback Tests: Tactile feedback validation
# Run all tests (unit + UI + watch)
./run_tests.sh
# Run specific test suites
./run_tests.sh --unit-only
./run_tests.sh --ui-only
./run_tests.sh --watch-only
# Run tests in Xcode
# Product → Test (⌘+U)- Test Data Management: Configurable test data loading for screenshots/demos
- Environment Variables: Control test behavior via environment settings
- Mock Data: Comprehensive test data for all scenarios
- Performance Benchmarks: Automated performance testing and monitoring
The Boxing Scorecard app provides comprehensive accessibility support for all users:
- Complete Navigation: All UI elements have proper accessibility labels and hints
- Descriptive Labels: Context-aware labels that include boxer names and corner colors
- Score Announcements: Clear score announcements with fighter identification
- Navigation Hints: Helpful instructions for navigating between rounds and sections
- Status Updates: Real-time announcements of fight progress and changes
- Dynamic Type: Full support for iOS text scaling up to accessibility sizes
- High Contrast: Optimized display for high contrast mode
- Color Independence: Information not conveyed through color alone
- Clear Typography: Appropriate font sizes and weights for readability
- Visual Hierarchy: Proper use of headers and semantic structure
- Large Touch Targets: All buttons meet minimum 44pt touch target requirements
- Haptic Feedback: Comprehensive haptic feedback for all interactions
- Gesture Alternatives: All functionality accessible via tap gestures
- Button States: Clear disabled/enabled states with accessibility traits
- Apple Watch Support: Full accessibility on Apple Watch with haptic feedback
- Clear Language: Simple, consistent terminology throughout the app
- Logical Flow: Intuitive navigation and information hierarchy
- Error Prevention: Clear validation and helpful error messages
- Consistent Patterns: Uniform interaction patterns across all screens
- Helpful Hints: Contextual hints for complex actions
- WCAG 2.1 AA Guidelines: Full compliance with web accessibility standards
- Apple Human Interface Guidelines: Follows Apple's accessibility best practices
- Section 508 Compliance: Meets federal accessibility requirements
- iOS Accessibility Standards: Exceeds iOS accessibility requirements
- Xcode: 14.0 or later
- iOS Deployment Target: 15.0+
- watchOS Deployment Target: 8.0+
- Swift: 5.7+
- CloudKit: Capabilities enabled for data sync
- SwiftUI: Modern declarative UI framework
- Core Data: Local data persistence and management
- CloudKit: iCloud synchronization and backup
- Combine: Reactive programming and data flow
- WatchConnectivity: Apple Watch communication
- UIKit: Image generation and sharing functionality
# Clone the repository
git clone https://github.com/yourusername/BoxingScorecardApp.git
cd BoxingScorecardApp
# Open in Xcode
open BoxingScorecard.xcodeproj
# Configure test data (optional)
export LOAD_TEST_FIGHTS=true
export CLEAR_EXISTING_FIGHTS=falseWe welcome contributions to the Boxing Scorecard App! Here's how you can help:
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes following our coding standards
- Add tests for any new functionality
- Run the test suite to ensure everything works
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request with a clear description
- Code Style: Follow Swift style guidelines and use SwiftLint
- Testing: Add unit tests for new functionality
- Accessibility: Ensure all new UI elements are accessible
- Documentation: Update documentation for new features
- CloudKit: Test CloudKit sync functionality thoroughly
- New Features: Additional scoring options, statistics, or UI improvements
- Accessibility: Enhanced accessibility features and testing
- Performance: Optimizations for speed and memory usage
- Testing: Additional test coverage and edge cases
- Documentation: Improved guides and examples
- Localization: Support for additional languages
This project is licensed under the MIT License - see the LICENSE file for details.
This app respects your privacy and follows Apple's privacy guidelines. See Privacy_Policy.md for complete details about data collection, usage, and protection.
Please read our Terms_of_Service.md before using the app. By using the Boxing Scorecard App, you agree to these terms.
- GitHub Issues: Open an issue for bugs or feature requests
- Documentation: Check the comprehensive guides in the
Documentation/folder - Testing: Run the test suite to verify functionality
- Accessibility: See accessibility guides for inclusive design
- CloudKit Sync: Check iCloud account and internet connection
- Apple Watch: Ensure Watch app is installed and paired
- Data Loss: Data is backed up to iCloud automatically
- Performance: Close other apps if experiencing slowdowns
- SwiftUI: Modern declarative UI framework
- Core Data: Robust data persistence and management
- CloudKit: Seamless iCloud synchronization
- WatchConnectivity: Apple Watch integration
- Combine: Reactive programming patterns
- Professional: Designed for boxing officials and enthusiasts
- Accessible: Inclusive design for all users
- Reliable: Robust data handling and error recovery
- Modern: Latest iOS and watchOS features and best practices
- Built with the boxing community in mind
- Open source for transparency and collaboration
- Comprehensive testing for reliability
- Extensive documentation for maintainability
Boxing Scorecard App - Professional boxing match scoring made simple, accessible, and reliable across all your Apple devices.