/standups

A rebuild of Apple’s “Scrumdinger” application using modern, best practices for SwiftUI development.

Primary LanguageSwift

Standups

The beginnings of a composable architecture.

Modularisation Strategy

The code has been modularised to facilitate feature modules, thus a composable architecture (of features). A package named scrums-scene is an example of this. The strategy behind this was to develop smaller common packages that are shared accross modules.

  • shared-resources
  • service
  • styling
  • etc

Another module to include would be shared-userinterface, which would host smaller UI-components for sharing between modules.

There's nothing particularly flashy about any of this. Just standard SOLID principles mostly. Internal logic has been preseved as much as possible requiring some retro-active modelling to promote a domain driven design.

Navigation

A very young and simple idea I had named nashy-navigation starts with the instantiation of NavigationLink. A lazy view helps mitigate the pain of needing to provide a non-optional value up front. The second issue I was hoping to address was the double datasource issue, where you have to maintain both a model item and a boolean to trigger push. I don't have an elegant solution for this, other than just ecapsulating the logic in a view modifier, thus limiting the risk of error (sorry about the name I was trying to get it all done quickly).

Conclusion

There isn't really any difference between this and how Apple do it. This codebase is just a demonstration of what I do in my projects to manage the axiety of it all (excluding the navigation package, which is a new idea). I would still heavily depend on UITesting and this solution doesn't present any new ideas on how to tackle the text-to-speach dependency or duration of time problems. But it was fun having a play.