Files
Sportstime/.planning/codebase/STACK.md
Trey t 60b450d869 docs: add Phase 1 plans and codebase documentation
- 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>
2026-01-10 00:00:45 -06:00

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*