IDLE

From mn/ifi/inf5750
Revision as of 11:11, 5 December 2017 by Vebjorkv@uio.no (talk | contribs) (Division of Labour)

Jump to: navigation, search

Group Members

  • Vebjørn Kvisli (vebjorkv@ifi.uio.no)
  • Halvard Hella Kværna (halvarhk@ifi.uio.no)
  • Andreas Hauge Standal (andrhst@ifi.uio.no)

Assignment

We have chosen the assignment Master Facility List.

Product Description

The final product will be a React-based DHIS2 app where the main feature will be 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.

App features

App/facilities

  • 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.

App/map

  • 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

App/admin

  • 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.

Architecture

The application is primarily based on the React framework. The different visual elements in the app is created as React Components, with the help of HTML, CSS and JSX.

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):

  • bootstrap
  • google-maps
  • react-bootstrap
  • react-bootstrap-dialog
  • react-dom
  • react-icons
  • react-router-dom
  • react-select
  • react-toggle
  • reactstrap
  • webpack
  • es6-promise
  • babel

Licensing

React has an MIT license. The MIT license is a permissive free software license originating at the Massachusetts Institute of Technology.[1] 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.[2] 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.[3]

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.

Vebjørn Halvard Andreas All
  • User suggestions
  • User information
  • Configuration of the admin page
  • Google Maps API
  • Searching and filtering of facilities
  • Responsiveness for mobile devices
  • Datasets and Indicators
  • Settings page
  • Back-end methods towards the API
  • Styling
  • Design
  • Architecture
  • API communication

Timeline for Development

Week 42

  • Created our first React app.
  • Created an organization and repository on GitHub.
  • Fetched our first data from the api using fetch().
  • Created a simple layout for the Master Facility List (MFL) with a navigation bar, search option boxes and a result page.
  • Added some styling with css and React Bootstrap.

Week 43

  • 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.

Week 44

  • Linked search boxes to their respective functions to fetch and print the correct data.

Week 45

  • 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.

Week 46

  • 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)

Plans for week 47

  • Clean up and release

Plans for week 48

  • Plan the final presentation

Plans for week 49

  • Plan the final presentation

Git Project Repository

Our Git project repository can be found HERE.

References

  1. Wikipedia 05.12.2017 https://en.wikipedia.org/wiki/MIT_License
  2. Wikipedia 05.12.2017 https://en.wikipedia.org/wiki/Permissive_software_licence
  3. Google Maps API - Pricing and Plans 05.12.2017 https://developers.google.com/maps/pricing-and-plans/#details