These are the frameworks that NN4M uses to establish core functionality and consistency across their apps.

nnbase
This is the root framework and is a dependency of several of the others. It is essential for every app.
nnnetwork
Dependencies: nnbase
Framework for making network requests:
- AbstractRequest – non-specific request type, forms basis for other request types
- CachedRequest – forces caching by intercepting the response and adding cache headers
- DiskCachedRequest – will check for a cached file on disk first, if the cached file exists on disk and is no older than the time specified the response will be returned from the file. If not will request from remote and save to disk.
- FileRequest – downloads a response, saves it to disk then returns the file in the callback rather than a modelled response.
- ManagedRequest – managed files are saved to disk and have a ‘lastUpdated’ time. If the lastModified time of the file on disk is older than the ‘lastModified’ time specified then will re-download the file and save to disk.
- NNRequest – generic implementation
- ScrapeRequest – scrape requests will make one call to retrieve a response from the client then send that response to another script (on our backend) which will return the final response.
nnsettings
Dependencies: nnnetwork
Framework to acquire and implement settings from CMS.
nnfilters
Dependencies: nnsettings
Framework for creating a Fragment which will filter out products in the app. Values are acquired from CMS.
nnforms
Dependencies: nnsettings
Allows the app to have user-fillable form Fragments configured remotely, which means changes can be implemented without a new Play Store release. Form definitions are downloaded as JSON and parsed into values which the framework can apply to the UI.
nnpush
Dependencies: nnsettings
Framework for handling Firebase-powered push notifications, along with permission management.
nnviews
Dependencies: nnsettings
Various common UI elements.
nnhomescreens
Dependencies: nnviews
Handles downloading the specifications for the homescreen and applying them to the layout, including the contained banners.
morelyticssdk
NN4M’s custom analytics tool. Bit beyond my abilities to dissect this just now.
