lib/hangman/engine/top_sup.ex

defmodule Hangman.Engine.TopSup do
  use Application
  use PersistConfig

  alias __MODULE__
  alias Hangman.Engine.{GameRecovery, DynGameSup}

  @ets get_env(:ets_name)
  # @reg get_env(:registry)

  # @impl Application
  @spec start(Application.start_type(), term) :: {:ok, pid}
  def start(_start_type, :ok = _start_args) do
    :ets.new(@ets, [:public, :named_table])

    [
      # {Registry, keys: :unique, name: @reg},

      # Child spec relying on `use DynamicSupervisor`...
      {DynGameSup, :ok},

      # Child spec relying on `use GenServer`...
      {GameRecovery, :ok}
    ]
    # NOTE: Strategy...                              ↓ ↓ ↓ ↓ ↓ ↓ ↓
    |> Supervisor.start_link(name: TopSup, strategy: :rest_for_one)
  end
end