Your state can be a tree, if it needs to be, so you can nest.
A normal practice is to have a model per page. For e.g. https://github.com/rtfeldman/elm-spa-example/blob/master/src...
And you can have another item next to it for global state if you need to. https://github.com/ohanhi/elm-shared-state explains one way to do this
Re:Ask HN: Anyone Using Elm in Production?
by danabrams on Monday March 04, 2019 @08:48AM
(#19301162)
If you really really really can’t live without a statefull component, you can always build a custom element (which can be a wrapper around an elm app). But reusable views with fairly complex state are used; they require a little bit of wiring up, but it means you know exactly where to look when there’s a big/problem.
You can think of each root-level branch of the state tree as its own "model". In redux (I haven't used elm much) I implement generic components by finding a property that can be used to derive a unique key and creating an entry for each component in the reducer.
And what do you do about generic reusuable components that need state? Say a typeahead search that needs to track the input string and the list of results from the server?