How chazmj1s/spfootball works
Purpose and entry points
SaturdayPulse is a college-football data, rankings, projection, and user-personalization platform. The primary backend is an ASP.NET Core API started at SaturdayPulse.Api/Program.cs; client entry points are the .NET MAUI app (SaturdayPulse.Mobile/MauiProgram.cs) and two admin UIs: Angular (SaturdayPulse.Admin/src/main.ts) and Blazor (SaturdayPulse.AdminBlazor/Program.cs).
API boundary and application services
HTTP controllers expose production game data, developer-facing capabilities, content, and user/profile operations. Controllers delegate to domain-oriented services rather than directly owning calculations or persistence.
• SaturdayPulse.Api/Controllers/ProductionGameDataController.cs
• SaturdayPulse.Api/Controllers/DeveloperController.cs
• SaturdayPulse.Api/Controllers/UserController.cs
Key service stages include game-data assembly, predictions/projections, ranking calculations, postseason logic, content delivery, and user-profile management.
• SaturdayPulse.Api/Services/GameDataService.cs
• SaturdayPulse.Api/Services/GamePredictionService.cs
• SaturdayPulse.Api/Services/WeeklyRankingsService.cs
Ratings, projections, and sports-data pipeline
The core analytical flow operates on teams, games, records, lines, projections, resolved results, and weekly rankings. Rating components calculate/scaled/blend ratings; projection services cache and evaluate prediction accuracy; production services shape API-ready game datasets.
• SaturdayPulse.Api/Services/RatingCalculator.cs
• SaturdayPulse.Api/Services/RatingBlendingService.cs
• SaturdayPulse.Api/Services/ProductionGameDataService.V2.cs
Supporting inputs include College Football Data API configuration and transfer-portal, roster, recruiting, and score-differential datasets.
• SaturdayPulse.Api/Configuration/CfbdApiSettings.cs
• SaturdayPulse.Api/Models/PortalEntry.cs
• SaturdayPulse.Api/Models/AvgScoreDifferential.cs
Persistence and transaction boundary
Entity Framework Core centers persistence in NCAAContext; repositories isolate dataset access and UnitOfWork coordinates repository-backed changes. EF migrations define the evolving relational schema, including rankings, projections, portal metrics, roster capacity, user data, and audit logs.
• SaturdayPulse.Api/Data/NCAAContext.cs
• SaturdayPulse.Api/Infrastructure/UnitOfWork.cs
• SaturdayPulse.Api/Migrations/NCAAContextModelSnapshot.cs
The model layer is the durable boundary between sports computation and API/client DTOs.
• SaturdayPulse.Api/Models/Games.cs
• SaturdayPulse.Api/Models/Projection.cs
• SaturdayPulse.Api/Models/UserProfile.cs
Identity, entitlements, and managed content
User APIs support profile/contact changes, followed teams/games, entitlements, and account auditing. Request/response contracts separate public API payloads from persistence entities; Swagger includes an explicit user-ID header filter.
• SaturdayPulse.Api/Services/UserProfileService.cs
• SaturdayPulse.Api/Models/UserEntitlement.cs
• SaturdayPulse.Api/Swagger/XUserIdHeaderFilter.cs
Application-managed content is shared through the API and represented in the core project.
• SaturdayPulse.Api/Services/ContentService.cs
• SaturdayPulse.Core/Content/ApplicationContentDocument.cs
Client applications and operations
The MAUI app uses MVVM pages/viewmodels and API/cache/auth/follow services to consume backend data across Android, iOS, Windows, Mac Catalyst, and Tizen. Its functional surfaces include rankings, schedules, teams, rivalries, postseason, sandbox predictions, settings, and personal teams.
• SaturdayPulse.Mobile/AppShell.xaml
• SaturdayPulse.Mobile/Services/GameDataApiService.cs
• SaturdayPulse.Mobile/ViewModels/PowerRankingsViewModel.cs
Admin clients provide operational dashboards, analytics, data operations, metric rebuilds, and postseason workflows through dedicated API service layers.
• SaturdayPulse.Admin/src/app/services/admin-api.service.ts
• SaturdayPulse.AdminBlazor/Services/AdminApiService.cs
• SaturdayPulse.AdminBlazor/Components/Pages/DataOps.razor
Runtime and infrastructure
The backend and Blazor admin runtime are .NET; the admin SPA is Angular/TypeScript; the mobile runtime is .NET MAUI. Deployment metadata indicates Azure Web Deploy/ARM service dependencies. The backend integrates with the external College Football Data API and persists operational data through EF Core.
• SaturdayPulse.Api/Properties/serviceDependencies.json
• SaturdayPulse.Api/Properties/ServiceDependencies/ncaa-power-ratings-api - Web Deploy/apis1.arm.json
• SaturdayPulse.Admin/angular.json
Components 19
Client applications
- MAUI mobile app · Cross-platform consumer app.
SaturdayPulse.Mobile/MauiProgram.cs - Mobile MVVM surfaces · Rankings, schedules, teams, postseason, and personal teams.
SaturdayPulse.Mobile/ViewModels/PowerRankingsViewModel.cs - Angular admin SPA
SaturdayPulse.Admin/src/main.ts - Blazor admin app
SaturdayPulse.AdminBlazor/Program.cs
ASP.NET Core API
- API host · Primary backend entry point.
SaturdayPulse.Api/Program.cs - HTTP controllers · Production data, developer, and user endpoints.
SaturdayPulse.Api/Controllers/ProductionGameDataController.cs - Game data service
SaturdayPulse.Api/Services/GameDataService.cs - User profile service · Profiles, follows, entitlements, and auditing.
SaturdayPulse.Api/Services/UserProfileService.cs - Content service
SaturdayPulse.Api/Services/ContentService.cs
Sports analytics pipeline
- Ratings calculation · Calculates and scales team ratings.
SaturdayPulse.Api/Services/RatingCalculator.cs - Rating blending
SaturdayPulse.Api/Services/RatingBlendingService.cs - Predictions and projections · Evaluates projections and prediction accuracy.
SaturdayPulse.Api/Services/GamePredictionService.cs - Weekly rankings
SaturdayPulse.Api/Services/WeeklyRankingsService.cs - Production game datasets · Shapes API-ready game data.
SaturdayPulse.Api/Services/ProductionGameDataService.V2.cs
Data and persistence
- Unit of work · Coordinates repository-backed changes.
SaturdayPulse.Api/Infrastructure/UnitOfWork.cs - NCAA context · Persistence boundary for operational sports and user data.
SaturdayPulse.Api/Data/NCAAContext.cs - Sports and user models · Games, projections, and user profiles bridge computation and API payloads.
SaturdayPulse.Api/Models/Games.cs - Application content
SaturdayPulse.Core/Content/ApplicationContentDocument.cs
Other components
- College Football Data API
SaturdayPulse.Api/Configuration/CfbdApiSettings.cs
Connections 21
- MAUI mobile app → Mobile MVVM surfaces: hosts
- Mobile MVVM surfaces → API host: consumes API
- Angular admin SPA → API host: admin operations
- Blazor admin app → API host: admin operations
- API host → HTTP controllers: routes requests
- HTTP controllers → Game data service: game data
- HTTP controllers → User profile service: user operations
- HTTP controllers → Content service: content
- Game data service → Production game datasets: assembles
- Production game datasets → Predictions and projections: uses projections
- Production game datasets → Weekly rankings: uses rankings
- Ratings calculation → Rating blending: produces inputs
- Rating blending → Predictions and projections: feeds
- Predictions and projections → Weekly rankings: informs
- Game data service → Unit of work: reads and writes
- User profile service → Unit of work: persists changes
- Unit of work → NCAA context: coordinates
- NCAA context → Sports and user models: maps
- Content service → Application content: serves
- College Football Data API → Game data service: sports data input
- College Football Data API → Ratings calculation: sports data input