{{indexmenu_n>60}} # Iopsys building blocks Iopsys uses a combination of different building blocks to achieve the optimal results. ## Overview The bulding blocks in iopsys are in part developed inhouse, and in parts taken from different sources, such as OpeWRT. ![enter image description here](./blockdiagram.png "Blockdiagram.png") Orange blocks are made by inteno. Light blue are OpenWRT blocks that have been integrated to work with inteno SDK. The Asterisk pbx has been integrated by inteno into iopsys to support Voip. Iopsys tries to stay as true to the OpenWRT project as much as possible. ### Main Components The main pieces of architecture iopsys relies on heavily are. #### UBUS **UBUS** provides communication between daemons and applications in iopsys. It consists of a daemon, library and some helpers. We also use the ubus layer to try to abstract away the hardware from the user space applications. A ubus daemon registers to ubus and publishes objects under specific namespace in the bus. Every deamon can provide multiple procedures with various amount of arguments. Daemons can generate events on the bus that different applications can subscribe to. #### UCI **UCI** Unified Configuration Interface is iopsys configuration user interface database. Uci holds all applications configurations data. #### PROCD **procd** is the process management daemon . It keeps track of processes started from init scripts (via ubus calls), and can suppress redundant service start/restart requests when the config/environment has not changed. #### JUCI **JUCI** is a JavaScript-based web interface for broadband routers running iopsys, its made and maintained inteno. JUCI is built with html5, angularjs and bootstrap with owsd and ubus as its backend. Key points - The code uses angular.js and html5, making it extremely easy to add new gui elements to the gui. - Responsive design - Dynamic theming - you can switch color themes at runtime. - Full language support - allowing for complete localization of your gui. Language file generation is even partially automatic (for html text). - Also supporting dynamically changing language on page without having to reload the application. - Also featuring quick debug mode for translations where you can see which strings are missing in currently used language pack.