An app for experimenting with how UIKit can be used for navigation while SwiftUI is used for UI.
The original motivation for this design was to be able to request navigation to a certain screen (via deep link or internal app navigation) and to have a centralized vetting system that would process the request and consider any active feature flags that would restrict navigation. Hence the initial design was influenced by this, by having a Navigator which serves as the central location for processing navigation requests. Wrapping the navigator was a series of services that would process strings as URLs and then as codified deep links, then checking against feature flags and other restrictions. Finally the processed links were given to Navigator as navigation modes. This project just contains the Navigator.
In absence of that restriction, it could be helpful to think about and develop a navigation system that is more flexible and more idiomatically UIKit navigation. The actual juggling of UIViewControllers and their presentation and dismissal could be the responsibility of this system, while the details about what the actual view controllers are and the navigation mode could just be outsourced to the caller. The design in general should follow the open-closed principle more closely. Inspiration can be taken from point-free and other navigation frameworks. The end result should be a navigation system that could fit the initial requirements while being more focused on its responsibilities and less vulnerable to shotgun surgery.