- 01-01-PLAN.md: core.py + mlb.py (executed) - 01-02-PLAN.md: nba.py + nhl.py - 01-03-PLAN.md: nfl.py + orchestrator refactor - Codebase documentation for planning context Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
Technology Stack
Analysis Date: 2026-01-09
Languages
Primary:
- Swift 5.0 - All iOS application code (
SportsTime/*.swift)
Secondary:
- Python 3 - Data scraping and CloudKit import scripts (
Scripts/*.py)
Runtime
Environment:
- iOS 26.2 deployment target (
SportsTime.xcodeproj/project.pbxproj) - Apple Silicon + Intel support
Package Manager:
- None (native Xcode project, no SPM/CocoaPods/Carthage)
- Python: pip with
Scripts/requirements.txt
Frameworks
Core:
- SwiftUI - Primary UI framework (
Features/**/*.swift) - UIKit - PDF generation, graphics (
Export/PDFGenerator.swift) - Observation - Modern reactive state (
@ObservableViewModels)
Data:
- SwiftData - Local persistence (
Core/Models/Local/*.swift) - CloudKit - Remote sync, public database (
Core/Services/CloudKitService.swift)
Location & Maps:
- MapKit - Routing, search, snapshots (
Core/Services/LocationService.swift,Export/Services/MapSnapshotService.swift) - CoreLocation - Coordinates, geocoding support
Media:
- PDFKit - Document generation (
Export/PDFGenerator.swift) - Photos/PhotosUI - Photo library access (
Features/Progress/ViewModels/PhotoImportViewModel.swift) - ImageIO - Image encoding/decoding
AI/ML:
- FoundationModels - On-device AI for route descriptions (
Core/Services/RouteDescriptionGenerator.swift- currently disabled)
Security:
- CryptoKit - Cryptographic operations (
Core/Services/BootstrapService.swift)
Testing:
- Swift Testing - Primary test framework (
SportsTimeTests/*.swift) - XCTest - UI tests (
SportsTimeUITests/*.swift)
Build/Dev:
- Xcode 16+ - Build system
- xcodebuild - CLI builds and tests
Key Dependencies
Critical:
- SwiftData - Local data persistence and caching
- CloudKit - Schedule sync and photo backup
- MapKit - Core trip planning (routing, EV charging, POI search)
Infrastructure:
- Foundation URLSession - HTTP networking for sports APIs
- Combine - Reactive patterns alongside Observation
Python Pipeline:
- requests>=2.28.0 - HTTP client for web scraping
- beautifulsoup4>=4.11.0 - HTML parsing
- pandas>=2.0.0 - Data manipulation
- lxml>=4.9.0 - XML/HTML parsing backend
- cryptography>=41.0.0 - CloudKit import (optional)
Configuration
Environment:
- No .env files required
- CloudKit container configured in entitlements
- Bundle ID:
com.t-t.SportsTime
Build:
SportsTime.xcodeproj- Native Xcode projectInfo.plist- App configuration with background modes
Background Modes:
remote-notification- Push notificationsfetch- Background refreshprocessing- Background tasks
Platform Requirements
Development:
- macOS with Xcode 16+
- iOS Simulator (iPhone 17, iOS 26.2)
- No external dependencies
Production:
- iOS 26.2+ deployment target
- CloudKit entitlement required
- Location services permission
Stack analysis: 2026-01-09 Update after major dependency changes