When you feel the need to partition your application in a more organized way, try the clean architecture approach of view -> view-models -> use cases -> repos -> data sources
In the project, we create an iOS Swift mobile application illustrating the use case of fetching and displaying todos with their completion status
Blog: https://nanosoft.co.za/blog/post/clean-architecture-in-swifui