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>
This commit is contained in:
106
.planning/codebase/STACK.md
Normal file
106
.planning/codebase/STACK.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user