A modern iOS application for managing and tracking sports activities, built with Swift and Xcode.
- About
- Features
- Tech Stack
- Requirements
- Installation
- Project Structure
- Usage
- Testing
- Contributing
- License
Sportx is a comprehensive sports management application designed to help users organize, track, and manage their sports activities efficiently. Built entirely in Swift, it leverages modern iOS frameworks to deliver a smooth and intuitive user experience.
- π Activity tracking and management
- π Statistics and analytics
- π― Goal setting and progress monitoring
- π± Native iOS experience with SwiftUI/UIKit
- β‘ Fast and responsive performance
- π Secure data management
- Swift (95.2% of codebase) - Modern, safe programming language
- iOS - Native Apple platform
- Xcode - Official IDE for iOS development
- SwiftUI/UIKit - Native UI frameworks (determined by project structure)
- Foundation - Core iOS frameworks
- XCTest - Native testing framework for unit and UI tests
- Unit Tests (SportXTests target)
- UI Tests (SportXUITests target)
- Git - Version control system
- GitHub - Repository hosting and collaboration platform
- Cocoa Touch - Core iOS application framework
- CoreData or similar - Data persistence (if applicable)
- macOS 12.0 or later
- Xcode 14.0 or later
- iOS Deployment Target 14.0 or later (typical for modern Swift projects)
- Swift 5.7 or later
- An Apple Developer Account (for device testing and deployment)
- Git installed on your system
git clone https://github.com/Sporto-org/Sportx.git
cd SportxOpen the Xcode project file:
open SportX.xcodeprojIf the project uses CocoaPods or Swift Package Manager:
For CocoaPods:
pod install
open SportX.xcworkspaceFor Swift Package Manager: Dependencies should be resolved automatically by Xcode.
- Select a target device or simulator in Xcode
- Ensure the correct Team ID is configured in the project settings
- Update any configuration files with your specific environment variables (if needed)
# Using Xcode
β + B (Build)
β + R (Run)Or from the command line:
xcodebuild -scheme SportX -destination 'generic/platform=iOS Simulator'
xcodebuild -scheme SportX -destination 'platform=iOS Simulator,name=iPhone 15' testSportx/
βββ SportX.xcodeproj/ # Xcode project configuration
βββ SportX/ # Main application target
β βββ AppDelegate.swift # App lifecycle management
β βββ SceneDelegate.swift # Scene lifecycle (iOS 13+)
β βββ Controllers/ # View controllers or SwiftUI views
β βββ Models/ # Data models
β βββ Views/ # UI components
β βββ Services/ # Business logic and API services
β βββ Resources/ # Assets, strings, configurations
β βββ Supporting Files/ # Info.plist, etc.
βββ SportXTests/ # Unit tests
β βββ Models Tests/ # Model testing
β βββ Services Tests/ # Service layer testing
β βββ Utilities Tests/ # Utility function testing
βββ SportXUITests/ # UI and integration tests
β βββ UI Test Cases/ # Screen and flow testing
βββ LICENSE # MIT License
βββ README.md # This file
- Select a simulator or device from the Xcode device selector
- Press Play (β + R) or use the Run button
- The application will build and launch on your selected target
- Navigate to the activities section
- Create new activity entries
- Track duration, distance, and other metrics
- View historical data and trends
- Access the analytics dashboard
- Review performance metrics
- Track achievements and milestones
- Configure app preferences
- Manage data and notifications
- Update profile information
- Hot Reload: SwiftUI provides real-time preview updates
- Debugging: Use Xcode's debugger to set breakpoints and inspect variables
- Console Logging: Use
print()oros_log()for debugging - View Hierarchy: Use the View Debugger (β + option + control + I) to inspect UI elements
Run all tests:
β + U # In XcodeRun specific test suite:
xcodebuild -scheme SportX -destination 'platform=iOS Simulator,name=iPhone 15' testThe project includes two test targets:
- SportXTests - Unit tests for models, services, and utilities
- SportXUITests - UI and integration tests for user workflows
Create test cases in the appropriate test target:
import XCTest
@testable import SportX
class ActivityModelTests: XCTestCase {
func testActivityCreation() {
let activity = Activity(name: "Running", duration: 30)
XCTAssertEqual(activity.name, "Running")
XCTAssertEqual(activity.duration, 30)
}
}We welcome contributions! Please follow these guidelines:
- Fork the repository on GitHub
- Create a feature branch (
git checkout -b feature/YourFeature) - Make your changes and commit (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/YourFeature) - Submit a Pull Request with a clear description
- Follow Swift naming conventions (camelCase for variables/functions, PascalCase for types)
- Use meaningful variable and function names
- Add comments for complex logic
- Ensure all tests pass before submitting a PR
- Write unit tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- β Allowed: Commercial use, modification, distribution, private use
- β Limited: Liability, warranty
- π Required: License and copyright notice
- π Check the Issues section for known problems
- π¬ Open a new issue if you find a bug or have a feature request
- π€ Join discussions in the Wiki
Thank you to all contributors and the iOS development community for their support!
Last Updated: June 2026
Repository: Sporto-org/Sportx