...
- Frontend(s) layer
- Backend layer
- Database layer
Frontend(s)
Modularity at frontend layer is achieved by assembling (UI) components in various technology stacks:
- web-application
- mobile application
- plugin of other platforms (DHIS2 app)
OpenIMIS FE core provides:
- building blocks to address topics such as:
- I18N
- standard types components (like period selection, amounts,...),...
- generic technical components (like confirmation dialog, user notification, error handling,...)
- transversal features related to:
- User & Security (login, profile, roles,...)
- Menus
- Job scheduler
- Administration (install and configure modules,...)
Each OpenIMIS FE module is standardised to
- expose (and register to) contribution points
- provide components for managed entities (claim picker, claim "row" representation,...)
- allow built-in or overloaded extensibility
Backend (api)
Modularity in backend layer is built around an (internal) bus, where modules emit and subscribe to events.
OpenIMIS BE core provides:
- building blocks to address topics such as:
synchronous/asynchronous messages (events) to/from other Software components and other OpenIMIS modules
- transversal features related to:
- User & Security (login, profile, roles, audit,...)
- Job scheduling, monitoring,...
- Transaction and error management
Each OpenIMIS FE module is standardised to
- expose (automated) REST Api (aligned to DHIS2 way of working?)
- allow built-in or overloaded extensibility
- implement ORM and database migrations
Database
OpenIMIS is based on a relational database, with enforced good practices:
- instance-agnostic id (UUID)
- managed indexes and foreign keys (even cross-modules!)
OpenIMIS is NOT
- multi-tenant