Files
gridpilot.gg/docs/architecture/website/PRESENTERS.md
2026-01-12 19:24:59 +01:00

1.4 KiB

Builders (Deprecated)

This document is deprecated. See BUILDERS.md for the current pattern.

Summary of changes

The architecture has been updated to use Builders instead of Presenters:

Old pattern (deprecated)

  • lib/presenters/ - All transformations
  • lib/view-models/ - ViewModels + some presenters

New pattern (current)

  • lib/builders/view-models/ - DTO → ViewModel
  • lib/builders/view-data/ - ViewModel → ViewData
  • lib/view-models/ - ViewModels only

Why the change?

The old pattern had three anti-patterns:

  1. Inconsistent naming - Same concept had 3 names (Presenter, Transformer, ViewModelPresenter)
  2. Inconsistent location - Presenters lived in both lib/presenters/ and lib/view-models/
  3. Confusing semantics - "Presenter" implies presenting to client, but some presenters prepared data for server templates

What changed?

ViewModel Builders (DTO → ViewModel):

  • Location: lib/builders/view-models/
  • Naming: *ViewModelBuilder
  • Example: AdminViewModelBuilder.build(dto)

ViewData Builders (ViewModel → ViewData):

  • Location: lib/builders/view-data/
  • Naming: *ViewDataBuilder
  • Example: LeagueViewDataBuilder.build(viewModel, id)

This makes the architecture self-documenting and clean.

See BUILDERS.md for full details.