SCFFLD is a cross-platform dependency injection (DI) framework for Android and iOS. It allows an app's components and runtime configuration to be described using JSON. Component configurations can be dynamically loaded or generated on the fly, allowing flexible and portable content-driven apps to be developed.
SCFFLD has a number of core aims:
Each of these is explained in more detail below.
SCFFLD provides a comprehensive JSON configuration file format for performing dependecy injection on an app's components. SCFFLD is basically an Inversion of Control (IoC) framework, similar to Spring for Java, which allows complete object component graphs to be described using JSON. Configuration files are then loaded and instantiated by the SCFFLD container. See the [configurations](https://innerfunction.com/SCFFLD/configurations) section for more details.
SCFFLD is available for both iOS and Android, and supports the same configuration file format on both platforms. SCFFLD configurations include a number of abstractions aimed at allowing the same configuration to be shared by both platforms.
SCCFLD configurations may be parameterized and turned into configuration templates. This allows commonly used configuration patterns to be described and reused by multiple separate components within an app.
Because configurations may be dynamically generated and loaded, it is possible to generate an app's UI from configurations which in turn are generated from the data that the app needs to display; this allows dynamic, content driven app UIs, with all the flexibility of web based UIs.
SCFFLD isn't an all-encomposing framework that tries to be a substitution for programming. Whilst core SCFFLD comes with a small number of useful standard services and UI components, developers will get most use by writing their own components and using them with SCFFLD. Any object can be a SCFFLD component - all that is required is that the component's configurable properties are made available as publically writeable properties of the component object.
SCFFLD isn't an all-or-nothing framework. It is quite possible to write an app which only uses SCFFLD in part, or to implement new screens in an existing app using SCFFLD without rewriting the whole app.