- 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>
107 lines
2.9 KiB
Markdown
107 lines
2.9 KiB
Markdown
# 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 (`@Observable` ViewModels)
|
|
|
|
**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 project
|
|
- `Info.plist` - App configuration with background modes
|
|
|
|
**Background Modes:**
|
|
- `remote-notification` - Push notifications
|
|
- `fetch` - Background refresh
|
|
- `processing` - 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*
|