Each business logic module is managed in a module directory.
**Only the core and db namespace of a module can be required outside of the module directory. Other namespaces must never be required outside of the module directory**
*There is no rigid structure on how to organize code inside modules outside of core and db namespaces*
- must contain specs for the app-db subpart the module modifies
- must contain getter and setter functions used by fx producing functions and subscriptions
- db logic called by other modules
Rationale:
These guidelines make db.cljs namespaces the place to go when making changes to the db layout and minimize breaking changes when adding/refactoring features
# Events
- all events must be defined in the single `status-im.events` namespace which can be considered as an index of everything going on in the app
-`:module.callback/` for callback events, which are events bringing back the result of an fx to the event loop, the name of the event should end with `-success` or `-error` most of the time. Other possibilities can be `-granted`, `-denied` for instance.
-`:module/` for internal events, examples are time based events marked `-timed-out`, external changes marked `-changed` or reception of external events marked `-received`.