- Vebjørn Kvisli (email@example.com)
- Halvard Hella Kværna (firstname.lastname@example.org)
- Andreas Hauge Standal (email@example.com)
We have chosen the assignment Master Facility List.
The final product is a React-based DHIS2 app where the main feature is browsing facilities and get information about them. We have focused on making a user friendly interface that is easy to navigate. The user can choose to see the facilities as a list or as markers on a map. It is also possible to search and set filters in order to see the facilities relevant for you. The user can select one specific facility to get more details about it, and can also send in suggestions if there is something he/she wants to see changed. Finally there is also an admin page where users with administrator access can see the user suggestions and change some settings. Below is a summary of the features of the app, and on the right side there are some screenshots of them.
- A List of all facilities with the option to filter and search to get specific results.
- A form with several input fields where the user can filter and search for specific facilities.
- A map where the user can see the location of facilities searched for. The map will have the ability to show one, all or a subset of facilities.
- An information box with detailed information about one specific facility, including data sets and indicators.
- A map showing the location of that specific facility.
- A link that opens up a dialog window where the user can write suggestions for changes to the facility. The suggestions are stored in /api/dataStore
- The admin page checks whether the user has administrator access or not.
- An information box where the user can see information about the currently logged in user.
- A list of user suggestions, each containing relevant facility, date, text and user.
- Admin users has the option to mark/unmark the suggestions as resolved, and delete them.
- Admin users can change some settings to determine which data sets and indicators that should be displayed for any user.
We chose to use React in this project because it usually has an easier learning curve than Angular for those with little experience with front-end development, due to a focus on brevity. However, Angular would most likely work good for this project as well, and is definitively something we would like to learn in the future.
Within React we also use several additional packages defined as dependencies in the package-file of our application, both for visual and functional elements here are some of the packages we have used (among others):
React has an MIT license. The MIT license is a permissive free software license originating at the Massachusetts Institute of Technology. This means that the software is free to use for anyone and for any purpose, and the source code is open. In other words the license itself has no implications on our project. However, the React source code can and will be changed and updated in the future. This may affect our software as React's functionality will change.
The software packages we use in our project have a variety of different licenses, but they are all permissive. A permissive software license is a free software licence with minimal requirements about how the software can be redistributed. The licenses of our software packages are MIT, BSD, Apache, ISC and WTFPL.
We use the Google Maps API for displaying facilities on the map. Google Maps has several utility software projects that is open source, but the API itself is not open source. It is free-to-use for non-commercial use and pay-to-use for commercial use. However, the free version has some limitations and restrictions. The free version is free up to 25,000 map loads per day and costs $0.50 USD per 1,000 additional map loads, up to 100,000 daily, if billing is enabled.
Division of Labour
During this project we have had frequent meetings, several times per week, where we discuss issues and challenges and work together on both programming and administrative tasks. We have divided the tasks evenly among us and tried to enable all of us to work on the different areas of making a web-application. These areas are for example front-end, back-end, API communication, administrative tasks and management. We have had a flat group structure, meaning that we all have the same roles and responsibilities.
The times we were not working together in the same room, we had continuous communication mostly on Facebook, but also via Git, Google Drive and e-mail.
Though the tasks have been evenly divided among us, we have had some main responsibilities when it comes to functionality and features of the web-app to avoid working on the same tasks. Below is an overview of our main responsibilities.
Timeline for Development
- Created our first React app.
- Created an organization and repository on GitHub.
- Created a simple layout for the Master Facility List with a navigation bar, search option boxes and a result page.
- Added some styling with css and React Bootstrap.
- Improved navigation bar style
- Improved overall layout style
- Added support for string matching of user-input for organizatons to get relevant organizations.
- Added toggle button for advanced search user inputs.
- Added routing of navigation bar buttons.
- Linked search boxes to their respective functions to fetch and print the correct data.
- Integrated google maps to display the organizations using their coordinates.
- Evaluated the best methods for filtering data.
- Figured out the best way to do paging of facilities when there are many results.
- Added the functionality for creating change suggestions for a facility.
- Added an admin-page where an administrator can see the change suggestions created by other users.
- Added settings page where an administrator can determine which data sets and indicators to be displayed for any user.
- Continued development of dynamically updating search fields.
- Continued adding functionality and link everything together.
- Changed the application from a multi-page app to a single-page app (same functionality)
- Little work due to exam preperations
- Small functional improvements
- Little work due to exam preperations
- Added more advanced settings
- Added some improvements to user suggestions
- Refactoring, code cleanup and documentation
- Planned the final presentation
Git Project Repository
Our Git project repository can be found HERE
Our Google Slides presentation can be found HERE
- Wikipedia 05.12.2017 https://en.wikipedia.org/wiki/MIT_License
- Wikipedia 05.12.2017 https://en.wikipedia.org/wiki/Permissive_software_licence
- Google Maps API - Pricing and Plans 05.12.2017 https://developers.google.com/maps/pricing-and-plans/#details