be an object with methods, or it can be a set of data structures and functions • Least likely to change when something external changes • For a single application, these entities are the business objects Entities
module) • A description of an action that a user performs on a system and tells the entity what to do • We don’t care about details • The result can be delivered to a web page or a mobile app …
module) • A description of an action that a user performs on a system and tells the entity what to do • We don’t care about details • The result can be delivered to a web page or a mobile app … • Similar to the command pattern
format most convenient for the use cases and entities, to the format most convenient for some external agency such as the Database or the Web/Android …
format most convenient for the use cases and entities, to the format most convenient for some external agency such as the Database or the Web/Android … • Entity-Boundary-Interactor Architecture
format most convenient for the use cases and entities, to the format most convenient for some external agency such as the Database or the Web/Android … • Entity-Boundary-Interactor Architecture • Input/Output boundaries
format most convenient for the use cases and entities, to the format most convenient for some external agency such as the Database or the Web/Android … • Entity-Boundary-Interactor Architecture • Input/Output boundaries • MV-whatever lives here
are just for data consuming, So mobile apps do very little than web apps. • Most of the time we deal with the platform issues ( memory, storage, lifecycle hell, location services, etc)
are just for data consuming, So mobile apps do very little than web apps. • Most of the time we deal with the platform issues ( memory, storage, lifecycle hell, location services, etc) • Enterprise applications ( Tap30, Snapp, DigiKala … )
are just for data consuming, So mobile apps do very little than web apps. • Most of the time we deal with the platform issues ( memory, storage, lifecycle hell, location services, etc) • Enterprise applications ( Tap30, Snapp, DigiKala … ) • Team growth
are just for data consuming, So mobile apps do very little than web apps. • Most of the time we deal with the platform issues ( memory, storage, lifecycle hell, location services, etc) • Enterprise applications ( Tap30, Snapp, DigiKala … ) • Team growth • Large Codebase
are just for data consuming, So mobile apps do very little than web apps. • Most of the time we deal with the platform issues ( memory, storage, lifecycle hell, location services, etc) • Enterprise applications ( Tap30, Snapp, DigiKala … ) • Team growth • Large Codebase • Deliver features fast without fuss
are just for data consuming, So mobile apps do very little than web apps. • Most of the time we deal with the platform issues ( memory, storage, lifecycle hell, location services, etc) • Enterprise applications ( Tap30, Snapp, DigiKala … ) • Team growth • Large Codebase • Deliver features fast without fuss • Also need an architecture for Test!!
vertical smaller monoliths (similar to microservices architecture) • Each team only needs to focus on the module that they work • Organize your code as it grows
the clean architecture principles to create a unidirectional and state-based data flow architecture • Convert our driver & frameworks layer to a single independent modules (e.g. location, persistence, etc)
the clean architecture principles to create a unidirectional and state-based data flow architecture • Convert our driver & frameworks layer to a single independent modules (e.g. location, persistence, etc) • Increase the level of abstraction
the clean architecture principles to create a unidirectional and state-based data flow architecture • Convert our driver & frameworks layer to a single independent modules (e.g. location, persistence, etc) • Increase the level of abstraction • Use BoundedContext pattern
libraries, architecture, etc. • Each BoundedContext is a mini-app and contains all layers from presentation to data • Each Platform module binds to a BoundedContext and add extra functionality • Test platform helps us to test specific/whole parts of the app • Twister is an app bootstrap and binds all needed modules to create our Passenger/Driver apps.