From mn/ifi/inf5750
Jump to: navigation, search


Project B - Data Store Manager App

Group members

  • Birk Johansson
  • Steven Hicks
  • Pavel Jurasek

Summary of requirements

We are creating a user interface for interacting with the DHIS2 datastore. Through this application you will be able to create, read, update and delete posts through a simple interface using the DHIS2 api to handle the interaction with the database. At the time of writing this the application is still under production. Below are a set of features you can expect from the final release due late November. Keep in mind that we’re willing to keep this feature list dynamic, meaning that features might be added or removed as we see necessary.

  • Create, Read, Update and Delete namespaces/records in the DHIS2 Datastore.
  • Search records limited by namespace or globally.
  • Filter namespaces/records for readability and easy of use.
  • Sort namespaces/records by name, creation date or last updated.
  • Restore old namespaces or records which have previously been deleted.

We have decided to base our project on react using redux. Below is a more detailed list of tools and libraries we are using to develop our application.

  • React
  • Redux
  • Babel
  • Webpack
  • ESLint
  • Mocha
  • SASS

After the project has concluded, it will be released as open source available on github.

Time schedule

How you are dividing tasks within the group

Using Kanban. Skype-meeting and GitHub-project table for Todos.

Using Skype and meetings for discussions and agreeing upon tasks.

Screenshots and screen flows

Documented learning during project

We have learned a lot. Especially regarding React and Redux architecture. The codebase have been refactored numerous times because we figured a better way to structure things. This is an eternal struggle, and we will always want to refactor something.

Suggested improvements to APIs etc

The dataStore API seems new and lackluster. It lacks several features that other API-endpoints support;

  • Queries - this was a problem as when we deleted a key we would need to check if it's the last key (so we could delete the namespace in the UI aswell) - however, beause the API do not support queries we could not use a simple GET request to check if the namespace is still there (and we did not want to fetch all namespaces and loop through this again). So we ended up having a GET-request on the namespace, so we would end up with a 404-error (which we catch) iif the namespace was deleted aswell, but it's kind of ugly.
  • PATCH - Because it only supports PUT we would need to GET the entire values in a KEY to update it or add items.
  • Structure of the API. We found that you should be able to create namespaces without keys, like a way to reserve namespaces. Right now you can't have empty namespaces, so if you delete the last key the entire namespace is deleted aswell.

Link to repository


Download link to sample web app