reate native and dedicated web apps for browsers, Node.JS, desktops, smart phones, smartTVs and connected objects. The applications can run on server or client side depending on the device capabilities. Currently the framework has a good support for “content-based” applications, including text, audio and video browsing. Depending on user need, future releases may focus on form input and other areas.
Several adapters are provided, one for each supported device. When an application is launched, it must choose an adapter matching the device it is currently running on.
Joshfire has a default App implementation that allows others to inherit from, it provides initialization methods and general glue.
Data and User Interface
Each application manages two tree structures:
- Data Tree: contains all the data the application needs to load or use over time
- UI Tree: contains all the UI elements the user might see or interact with (buttons, lists, videos…)
The advantages include: clear separation of concerns (content and layout), each element is addressable with a unique path, simple mappings can be made with existing standards.
Basic UI elements are abstracted in base classes from which inherit device-specific implementations.
- In a browser: a simple <UL> – <LI> combo
- In a smartphone (iOS, Android, etc.): a scrollable, native-looking list
- In a shell: a list of choices in a command-line
- In a connected TV: a browseable ribbon
Each adapter supports several input methods like “keyboard”, “mouse”, “touch”, “tvremote”, etc.
Each user interaction can be mapped to an event to which any part of the application can react.
Inputs can also be proxies for remote controllers, with a simple TCP packet firing an event in the app.