Files
gridpilot.gg/plans/type-inventory.md
2025-12-17 18:01:47 +01:00

15 KiB

Type Inventory & Classification

Overview

This document inventories all types extracted from apps/website/lib/apiClient.ts (lines 13-634), classifies them according to clean architecture principles, and specifies their target locations.

Classification Rules

  • DTOs: Transport objects from API, pure data, no methods
  • ViewModels: UI-specific with computed properties, formatting, display logic
  • Input DTOs: Request parameters for API calls
  • Output DTOs: API response wrappers

Types from apiClient.ts

Type Name Line Range Classification Target Location Dependencies Used By
DriverDTO 13-19 DTO apps/website/lib/dtos/DriverDto.ts none Various pages (driver profiles, leaderboards, etc.)
ProtestViewModel 21-29 ViewModel apps/website/lib/viewModels/ProtestViewModel.ts none League stewarding pages
LeagueMemberViewModel 31-36 ViewModel apps/website/lib/viewModels/LeagueMemberViewModel.ts DriverDTO League member lists
StandingEntryViewModel 38-46 ViewModel apps/website/lib/viewModels/StandingEntryViewModel.ts DriverDTO League standings pages
ScheduledRaceViewModel 48-54 ViewModel apps/website/lib/viewModels/ScheduledRaceViewModel.ts none League schedule pages
LeagueSummaryViewModel 57-70 ViewModel apps/website/lib/viewModels/LeagueSummaryViewModel.ts none League lists, dashboards
AllLeaguesWithCapacityViewModel 72-74 ViewModel apps/website/lib/viewModels/AllLeaguesWithCapacityViewModel.ts LeagueSummaryViewModel League discovery pages
LeagueStatsDto 76-78 DTO apps/website/lib/dtos/LeagueStatsDto.ts none League stats displays
LeagueJoinRequestViewModel 80-86 ViewModel apps/website/lib/viewModels/LeagueJoinRequestViewModel.ts none League admin join requests
LeagueAdminPermissionsViewModel 88-95 ViewModel apps/website/lib/viewModels/LeagueAdminPermissionsViewModel.ts none League admin checks
LeagueOwnerSummaryViewModel 97-102 ViewModel apps/website/lib/viewModels/LeagueOwnerSummaryViewModel.ts none League owner dashboards
LeagueConfigFormModelDto 104-111 DTO apps/website/lib/dtos/LeagueConfigFormModelDto.ts none League configuration forms
LeagueAdminProtestsViewModel 113-115 ViewModel apps/website/lib/viewModels/LeagueAdminProtestsViewModel.ts ProtestViewModel League protest admin
LeagueSeasonSummaryViewModel 117-123 ViewModel apps/website/lib/viewModels/LeagueSeasonSummaryViewModel.ts none League season lists
LeagueMembershipsViewModel 125-127 ViewModel apps/website/lib/viewModels/LeagueMembershipsViewModel.ts LeagueMemberViewModel League member management
LeagueStandingsViewModel 129-131 ViewModel apps/website/lib/viewModels/LeagueStandingsViewModel.ts StandingEntryViewModel League standings pages
LeagueScheduleViewModel 133-135 ViewModel apps/website/lib/viewModels/LeagueScheduleViewModel.ts ScheduledRaceViewModel League schedule pages
LeagueStatsViewModel 137-145 ViewModel apps/website/lib/viewModels/LeagueStatsViewModel.ts none League stats pages
LeagueAdminViewModel 147-151 ViewModel apps/website/lib/viewModels/LeagueAdminViewModel.ts LeagueConfigFormModelDto, LeagueMemberViewModel, LeagueJoinRequestViewModel League admin pages
CreateLeagueInput 153-159 Input DTO apps/website/lib/dtos/CreateLeagueInputDto.ts none League creation forms
CreateLeagueOutput 161-164 Output DTO apps/website/lib/dtos/CreateLeagueOutputDto.ts none League creation responses
DriverLeaderboardItemViewModel 167-175 ViewModel apps/website/lib/viewModels/DriverLeaderboardItemViewModel.ts none Driver leaderboards
DriversLeaderboardViewModel 177-179 ViewModel apps/website/lib/viewModels/DriversLeaderboardViewModel.ts DriverLeaderboardItemViewModel Driver leaderboard pages
DriverStatsDto 181-183 DTO apps/website/lib/dtos/DriverStatsDto.ts none Driver stats displays
CompleteOnboardingInput 185-188 Input DTO apps/website/lib/dtos/CompleteOnboardingInputDto.ts none Driver onboarding
CompleteOnboardingOutput 190-193 Output DTO apps/website/lib/dtos/CompleteOnboardingOutputDto.ts none Driver onboarding responses
DriverRegistrationStatusViewModel 195-199 ViewModel apps/website/lib/viewModels/DriverRegistrationStatusViewModel.ts none Race registration status
TeamSummaryViewModel 202-208 ViewModel apps/website/lib/viewModels/TeamSummaryViewModel.ts none Team lists
AllTeamsViewModel 210-212 ViewModel apps/website/lib/viewModels/AllTeamsViewModel.ts TeamSummaryViewModel Team discovery pages
TeamMemberViewModel 214-219 ViewModel apps/website/lib/viewModels/TeamMemberViewModel.ts DriverDTO Team member lists
TeamJoinRequestItemViewModel 221-227 ViewModel apps/website/lib/viewModels/TeamJoinRequestItemViewModel.ts none Team join requests
TeamDetailsViewModel 229-237 ViewModel apps/website/lib/viewModels/TeamDetailsViewModel.ts TeamMemberViewModel Team detail pages
TeamMembersViewModel 239-241 ViewModel apps/website/lib/viewModels/TeamMembersViewModel.ts TeamMemberViewModel Team member pages
TeamJoinRequestsViewModel 243-245 ViewModel apps/website/lib/viewModels/TeamJoinRequestsViewModel.ts TeamJoinRequestItemViewModel Team join request pages
DriverTeamViewModel 247-252 ViewModel apps/website/lib/viewModels/DriverTeamViewModel.ts none Driver team info
CreateTeamInput 254-259 Input DTO apps/website/lib/dtos/CreateTeamInputDto.ts none Team creation forms
CreateTeamOutput 261-263 Output DTO apps/website/lib/dtos/CreateTeamOutputDto.ts none Team creation responses
UpdateTeamInput 265-270 Input DTO apps/website/lib/dtos/UpdateTeamInputDto.ts none Team update forms
UpdateTeamOutput 271-273 Output DTO apps/website/lib/dtos/UpdateTeamOutputDto.ts none Team update responses
RaceListItemViewModel 275-284 ViewModel apps/website/lib/viewModels/RaceListItemViewModel.ts none Race lists
AllRacesPageViewModel 286-288 ViewModel apps/website/lib/viewModels/AllRacesPageViewModel.ts RaceListItemViewModel Race discovery pages
RaceStatsDto 290-292 DTO apps/website/lib/dtos/RaceStatsDto.ts none Race stats displays
RaceDetailEntryViewModel 294-302 ViewModel apps/website/lib/viewModels/RaceDetailEntryViewModel.ts none Race detail entry lists
RaceDetailUserResultViewModel 304-313 ViewModel apps/website/lib/viewModels/RaceDetailUserResultViewModel.ts none Race detail user results
RaceDetailRaceViewModel 315-326 ViewModel apps/website/lib/viewModels/RaceDetailRaceViewModel.ts none Race detail race info
RaceDetailLeagueViewModel 328-336 ViewModel apps/website/lib/viewModels/RaceDetailLeagueViewModel.ts none Race detail league info
RaceDetailRegistrationViewModel 338-341 ViewModel apps/website/lib/viewModels/RaceDetailRegistrationViewModel.ts none Race registration status
RaceDetailViewModel 343-350 ViewModel apps/website/lib/viewModels/RaceDetailViewModel.ts RaceDetailRaceViewModel, RaceDetailLeagueViewModel, RaceDetailEntryViewModel, RaceDetailRegistrationViewModel, RaceDetailUserResultViewModel Race detail pages
RacesPageDataRaceViewModel 352-364 ViewModel apps/website/lib/viewModels/RacesPageDataRaceViewModel.ts none Races page data
RacesPageDataViewModel 366-368 ViewModel apps/website/lib/viewModels/RacesPageDataViewModel.ts RacesPageDataRaceViewModel Races page
RaceResultViewModel 370-381 ViewModel apps/website/lib/viewModels/RaceResultViewModel.ts none Race results
RaceResultsDetailViewModel 383-387 ViewModel apps/website/lib/viewModels/RaceResultsDetailViewModel.ts RaceResultViewModel Race results detail
RaceWithSOFViewModel 389-393 ViewModel apps/website/lib/viewModels/RaceWithSOFViewModel.ts none Race SOF displays
RaceProtestViewModel 395-405 ViewModel apps/website/lib/viewModels/RaceProtestViewModel.ts none Race protests
RaceProtestsViewModel 407-410 ViewModel apps/website/lib/viewModels/RaceProtestsViewModel.ts RaceProtestViewModel Race protests list
RacePenaltyViewModel 412-421 ViewModel apps/website/lib/viewModels/RacePenaltyViewModel.ts none Race penalties
RacePenaltiesViewModel 423-426 ViewModel apps/website/lib/viewModels/RacePenaltiesViewModel.ts RacePenaltyViewModel Race penalties list
RegisterForRaceParams 428-431 Input DTO apps/website/lib/dtos/RegisterForRaceParamsDto.ts none Race registration
WithdrawFromRaceParams 433-435 Input DTO apps/website/lib/dtos/WithdrawFromRaceParamsDto.ts none Race withdrawal
ImportRaceResultsInput 437-440 Input DTO apps/website/lib/dtos/ImportRaceResultsInputDto.ts none Race results import
ImportRaceResultsSummaryViewModel 441-447 ViewModel apps/website/lib/viewModels/ImportRaceResultsSummaryViewModel.ts none Import results summary
GetEntitySponsorshipPricingResultDto 450-454 DTO apps/website/lib/dtos/GetEntitySponsorshipPricingResultDto.ts none Sponsorship pricing
SponsorViewModel 456-461 ViewModel apps/website/lib/viewModels/SponsorViewModel.ts none Sponsor lists
GetSponsorsOutput 463-465 Output DTO apps/website/lib/dtos/GetSponsorsOutputDto.ts SponsorViewModel Sponsor list responses
CreateSponsorInput 467-472 Input DTO apps/website/lib/dtos/CreateSponsorInputDto.ts none Sponsor creation
CreateSponsorOutput 474-477 Output DTO apps/website/lib/dtos/CreateSponsorOutputDto.ts none Sponsor creation responses
SponsorDashboardDTO 479-485 DTO apps/website/lib/dtos/SponsorDashboardDto.ts none Sponsor dashboards
SponsorshipDetailViewModel 487-496 ViewModel apps/website/lib/viewModels/SponsorshipDetailViewModel.ts none Sponsorship details
SponsorSponsorshipsDTO 498-502 DTO apps/website/lib/dtos/SponsorSponsorshipsDto.ts SponsorshipDetailViewModel Sponsor sponsorships
RequestAvatarGenerationInput 505-508 Input DTO apps/website/lib/dtos/RequestAvatarGenerationInputDto.ts none Avatar generation requests
RequestAvatarGenerationOutput 510-514 Output DTO apps/website/lib/dtos/RequestAvatarGenerationOutputDto.ts none Avatar generation responses
RecordPageViewInput 517-521 Input DTO apps/website/lib/dtos/RecordPageViewInputDto.ts none Page view tracking
RecordPageViewOutput 523-525 Output DTO apps/website/lib/dtos/RecordPageViewOutputDto.ts none Page view responses
RecordEngagementInput 527-532 Input DTO apps/website/lib/dtos/RecordEngagementInputDto.ts none Engagement tracking
RecordEngagementOutput 534-536 Output DTO apps/website/lib/dtos/RecordEngagementOutputDto.ts none Engagement responses
LoginParams 539-542 Input DTO apps/website/lib/dtos/LoginParamsDto.ts none Login forms
SignupParams 544-548 Input DTO apps/website/lib/dtos/SignupParamsDto.ts none Signup forms
SessionData 550-556 DTO apps/website/lib/dtos/SessionDataDto.ts none Session management
PaymentViewModel 559-565 ViewModel apps/website/lib/viewModels/PaymentViewModel.ts none Payment lists
GetPaymentsOutput 567-569 Output DTO apps/website/lib/dtos/GetPaymentsOutputDto.ts PaymentViewModel Payment list responses
CreatePaymentInput 571-577 Input DTO apps/website/lib/dtos/CreatePaymentInputDto.ts none Payment creation
CreatePaymentOutput 579-582 Output DTO apps/website/lib/dtos/CreatePaymentOutputDto.ts none Payment creation responses
MembershipFeeViewModel 584-589 ViewModel apps/website/lib/viewModels/MembershipFeeViewModel.ts none Membership fees
MemberPaymentViewModel 591-596 ViewModel apps/website/lib/viewModels/MemberPaymentViewModel.ts none Member payments
GetMembershipFeesOutput 598-601 Output DTO apps/website/lib/dtos/GetMembershipFeesOutputDto.ts MembershipFeeViewModel, MemberPaymentViewModel Membership fees responses
PrizeViewModel 603-609 ViewModel apps/website/lib/viewModels/PrizeViewModel.ts none Prize lists
GetPrizesOutput 611-613 Output DTO apps/website/lib/dtos/GetPrizesOutputDto.ts PrizeViewModel Prize list responses
WalletTransactionViewModel 615-621 ViewModel apps/website/lib/viewModels/WalletTransactionViewModel.ts none Wallet transactions
WalletViewModel 623-628 ViewModel apps/website/lib/viewModels/WalletViewModel.ts WalletTransactionViewModel Wallet displays
GetWalletOutput 630-632 Output DTO apps/website/lib/dtos/GetWalletOutputDto.ts WalletViewModel Wallet responses

Inline DTOs Found in Pages

apps/website/app/races/[id]/results/page.tsx (lines 17-56)

  • PenaltyTypeDTO (17-24): Union type for penalty types - should be extracted to DTO
  • PenaltyData (26-30): Interface for penalty data - should be extracted to DTO
  • RaceResultRowDTO (32-41): Interface with method - should be extracted to ViewModel (has getPositionChange method)
  • DriverRowDTO (43-46): Simple driver data - should be extracted to DTO
  • ImportResultRowDTO (48-56): Import result data - should be extracted to DTO

Other Inline Types (mostly local component types, not for extraction)

  • Various filter types, component props interfaces, and local UI types that are not API-related DTOs/ViewModels

Dependencies Mapping

  • DriverDTO: Used by LeagueMemberViewModel, StandingEntryViewModel, TeamMemberViewModel
  • LeagueSummaryViewModel: Used by AllLeaguesWithCapacityViewModel
  • DriverLeaderboardItemViewModel: Used by DriversLeaderboardViewModel
  • TeamSummaryViewModel: Used by AllTeamsViewModel
  • TeamMemberViewModel: Used by TeamDetailsViewModel, TeamMembersViewModel
  • TeamJoinRequestItemViewModel: Used by TeamJoinRequestsViewModel
  • RaceListItemViewModel: Used by AllRacesPageViewModel
  • RaceDetailRaceViewModel, RaceDetailLeagueViewModel, etc.: Used by RaceDetailViewModel
  • RacesPageDataRaceViewModel: Used by RacesPageDataViewModel
  • RaceResultViewModel: Used by RaceResultsDetailViewModel
  • RaceProtestViewModel: Used by RaceProtestsViewModel
  • RacePenaltyViewModel: Used by RacePenaltiesViewModel
  • SponsorViewModel: Used by GetSponsorsOutput
  • SponsorshipDetailViewModel: Used by SponsorSponsorshipsDTO
  • PaymentViewModel: Used by GetPaymentsOutput
  • MembershipFeeViewModel, MemberPaymentViewModel: Used by GetMembershipFeesOutput
  • PrizeViewModel: Used by GetPrizesOutput
  • WalletTransactionViewModel: Used by WalletViewModel
  • WalletViewModel: Used by GetWalletOutput

Next Steps

  • Extract all types to their respective files
  • Update imports in apiClient.ts and all consuming files
  • Remove inline types from pages and replace with proper imports
  • Ensure no empty files or mixed DTO/ViewModel files