Alexander Korpusov (oleksako)
Dmitry Filosofov (dmitryf)
Saskia Brinkmann (saskiabr) - left the group due to personal issues
Product descriptions requirements
This assignment involves making a DHIS2 Web App for searching, browsing and proposing changes to organisation units and related resources such as organisation units groups.
- Searching through organisation units.
- Displaying attributes of organisation units.
- Administrator should be able to configure which data elements should be shown to the users.
- A possibility for users to propose changes for the organisation units and it's structure. The list with the changes should support filtering to show only proposals relevant for the particular administrator.
- react - main library providing all of the necessary basic functionality for developing UI application.
- react-router-dom - allows to make dynamic routing
- fuse.js - used to provide fuzzy search functionality
- leaflet - used to render maps
- react-bootstrap - bootstrap components for react, provides easy way to write UI using bootstrap without the need to write out pure html
The original considerations were to keep the application as simple as possible and for these reasons we opted not to use reducers such as Redux. However, the size of the project is probably on the limit on where one can avoid using reducers. It is our experience from completing this assignment, that web-applications of similar size would benefit from moving all the control on data to a global reducers.
The user interface of the application has three main parts - search area, information area and map area. In the information area a user can choose an organization unit either from a tree list, or by using search (which support fuzzy searching to avoid simple misspellings). Information area consists is where all the information about an organization unit is shown. A user has an opportunity to keep three different organization units open simultaneously in the appropriate tabs. The map area is situated on the right side of the application. If an organization unit has the attributte with coordinates, it will be shown as a point or a region in the map area.
Administrators have an opportunity to to add specific Data Elements to be shown in the information area. Access to the set-up page is possible through the Manage panel, where administrator should select the data elements to show. The period in the current version is set to the current year, although the possibly to mark the period is reserved in the data structure of the app. The data about which data elements must be shown is stored in the DHIS2 system by using dataStore api. All changes are submitted to /ads_data_elements/<org_id> and consist of a single document with a list of data element id's that must be shown to the user, this list is used on the main page when deciding which data elements should be displayed to the user.
We will be using open source products to develop our app, and our product itself will be open sources (MIT licensed).
React is MIT licensed.
React Bootstrap is MIT licensed. 
Fuse has Apache 2.0 license 
React Router has MIT license 
Leaflet has BSD 2-clause "Simplified" License  which is very similar to MIT with only slight alterations.
Division of labour
All the team members will contribute equally to the design and development of the application. Alexander has put an extra effort into the parts with the search/tre area and information area, while Dmitry into the maps area and administrative options.