Since late 2017, DG has been working with the Government of Makueni County (GMC) in Kenya and Hivos on a program that takes a multi-faceted approach to improving the quality of procurement processes for transparency and anti-corruption in the county. In partnership, DG and GMC developed a portal that provides detailed information about each step along the tender and award procurement process. The platform was launched late last year and is different from our other Aid Management Platforms (AMPs) or Open Contracting portals, in that it provides county-level instead of national-level open contracting information. In this post, we highlight the technology behind the portal.
The Government of Makueni County Open Contracting Portal (OC Portal) is an open-source platform built to organize and archive procurement documents, improve data transparency and feedback by the public, and to help publish procurement information in the Open Contracting Data Standard (OCDS). DG developed the platform using the Open Contracting Explorer (OCE) framework upon which several of our OC tools are built, and the DG Toolkit, which is a flexible, customizable, and ready-to-launch set of code modules that DG developed and often uses as a ‘base’ from which we build new systems. The modules in the DG Toolkit are continually tested and improved.
The data entry module uses the DG Toolkit form builder components, based on Apache Wicket 8 and Hibernate to provide rich data input forms for the different procurement phases, enabling complex Spring Security user role hierarchies, validation and workflow management. With different levels of validation and edit access assigned to user, admin, and approver roles within the data entry module, the system offers individual customization for different types of users.
The public tool’s configuration provides fast access to data that can be shared with users, as well as a version of the dataset that is OCDS compliant, and which can be directly downloaded and used by the public. Additionally, the public tool uses a decoupled read-only database, which enhances the security of the tool. A single source of information is kept in the PostgreSQL database (not part of the public portal,) which therefore is more secure. Another benefit of our configuration is that public traffic does not affect the performance of the data entry platform running PostgreSQL.
MongoDB’s Aggregation Framework fuels the visualizations in the dashboard interface. It provides an aggregated view of the data, which can be narrowed down and filtered by different criteria. Additionally, the data can either be browsed or exported.
Two different flavors of the API are available to the public – one that is compliant with Open Contracting Data Standard (OCDS) 1.1, and a second API, that can be used to download the Makueni-specific data model. OCDS output is validated during generation, using the jOCDS Validator.
The public portal is also providing SMS based procurement-related feedback through the Infobip message portal.
License, Versioning, and Development Workflow
Capitalizing on existing processes from the DG Toolkit and Open Contracting Explorer, which are both released under the permissive open-source MIT License, the Makueni OC Portal uses the same license model. Source code contributions can be provided on the Github Platform by the community, while the whole tool can be reused in different contexts – free of charge as is, or enhanced and modified as needed.
As for our development workflow, we used the popular Gitflow workflow during development, which helped isolate feature development on branches. Additionally, it enabled us to maintain a stable master version of the tool, while the development version was going through active changes.
For version releases, we are using the Semantic Versioning Specification (SemVer) model and strictly adhere to updating both frontend and backend components.
Releasing Software Updates Through Artifact Publishing
Once a new version of the tool is ready to be released, software artifacts that can be readily deployed on servers are published on the Bintray.com portal and can be downloaded by anyone. This publishing model makes setup and deployment easier as there is no need to download and compile the source code of the tool every time a server is updated.
The Government of Makueni County Open Contracting Portal has a dedicated page on bintray.com where all the artifacts are published and interested third parties can subscribe to receive updates when new versions of the portal are pushed online.
What’s Next for the OC Portal?
As we look forward to expanding the portal to other counties in Kenya in Phase II of our work with Hewlett and Hivos, we will use lessons from working with the Government of Makueni County to continue our Agile development process. DG uses post-mortems to reflect on lessons learned throughout the project and then carries lessons on to the next project.
Our ultimate goal is to conduct two to three other OC assessments and implement at least one more county-level OC Portal in Kenya. In doing so, we will build on the technical architecture and tools used in Makueni County to ensure systems continue to be fast, flexible, and customizable – all while meeting local user needs.
Kassimou Issaka, agroéconomiste et directeur général de l'Agence territoriale de développement agricole (ATDA Pôles), donne un aperçu du travail de l'ATDA et explique comment la plateforme Cashew-IN développée par DG et CNFA soutiendra son travail.
Kassimou Issaka, Agroeconomist and General Manager of the Territorial Agency for Agricultural Development (ATDA Pôles), gives an overview of ATDA Pôles’ work and explains how the Cashew-IN platform developed by CNFA and DG will support his work.
In this episode of "Data... for What?!" Josh talks to Charlene Migwe-Kagume about how we are approaching agriculture in our new strategy. DG has worked in Agriculture for a number of years, but how are we building on past experiences and our strengths to take this work forward? Josh and Charlene discuss digging deeper in agriculture and how innovation plays a role.