The component interfaces bring context to the development experience.
Object oriented languages give us context by using objects. Let’s say we work in an object oriented language and that we want to save the object userToBeSaved. If we type userToBeSaved followed by a ., the intellisense in the IDE will show us a list of available methods for that object, for example persist:
...or if implemented as a service:
userService.persist(db, userToBeSaved)
With Polylith we get the same level of support from the IDE by first importing the user interface and then typing:
...now the IDE will list all available functions in the user interface and one of them would be persist!:
(user/persist! db user-to-be-saved)