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

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 (@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