"Stuff I'm working on ..."

Latest note

by kaeru published 2021/11/21 17:42:55 GMT+8, last modified 2021-11-21T17:42:55+08:00

Reusable and Extensible Knowledge Management Site for Civil Society

by kaeru published 2022/10/10 17:40:00 GMT+8, last modified 2022-10-11T10:00:10+08:00
Public website, Knowledge Management, Reporting and ReST APIs from one online service

I have to develop and maintain several civil society websites, while also doing all the other tasks such as fund raising, project management, developing and writing materials, facilitating and training workshops (in multiple fields), communications, including media resources such as photography and graphics design.

Like my presentation for Plone Conf 2020, when developing websites or online services, I always plan for it to be maintainable by one person on a voluntary basis.

Using same approach, but for civil society websites, we can build something that's reusable and extensible, not just for different websites, but also reduce workload for day to day tasks. If I have to update a public website with content, can I do it in such as way, that when I upload and edit content once, it can also be useful for the public, for internal and external knowledge management and also capture monitoring and evaluation metadata and indicators to help with reporting?

Also for it to be extensible enough, that it can be themed differently, and each site can mix and match, fields as needed. With Plone it's doable.

Standard NGO/Civil Society Content Types

Civil society organizations, especially for international development, have common long established and defined set of content types. The following pretty much covers everything you do.

  • Projects
    • Activities and Workshops
    • Resources (Outputs such as publications, reports, training materials and what not)
    • Citation (or dissemination and outcomes)
    • Updates (quick blogs and notes)
  • Resource Persons and Organizations (Beneficiaries, Implementing and Funders)
Content types used by NGOs
Common content used by NGOs


There is also a set of common metadata, that you need to report on as part of monitoring and evaluation, but also for knowledge management. SDGs, development themes, indicators for various donors, country and location and partners. Some of the content types are also key metadata. By making them content types, it also makes the site more maintainable. When you add Organizations, you are also adding to list of partners. When you add Projects, you also add to list of Projects that other content types can be tagged with. With eea.faceted navigation, you can quickly configure and browse the different possibilities of extracting information.

Training Materials related to Anti-Corruption for Journalists for countries in Southeast Asia, funded by the European Union, for 2020-2022? Sure. No problems.

With this platform and diligent knowledge management, I only need to upload content once. For public access, for reporting, for internal and external M&E and knowledge management.

Screenshot from 2022-10-10 16-12-21.png
Common metadata

Screenshot from 2022-10-10 16-45-20.png

Behaviors - Mix and Match

Dexterity behavior is probably the main thing that makes this work. Each site is not always the same. While there are some common fields like SDGs or countries, certain fields are not eg. list of Malaysian marginalized communities and laws will not be needed for a regional initiative.  We simply pick which ones we want to enable/disable or as additional add-on.

Screenshot from 2022-10-10 16-13-42.png
Reusable and configurable fields with Plone behaviors

Screenshot from 2022-10-10 16-39-57.png
Reusable fields

Screenshot from 2022-10-10 16-41-24.png
Mix and Match Extensibility

ReST API, Theming and modern JS UI

One problem with Plone sites pre-ReST API feature, was that the valuable structured data was not accessible for external users and other uses. With the ReST API, others can write their own front-end if they wish. Mostly for me, this allows me to extract some reporting features quickly using something like Jupyter Notebook.

Screenshot from 2022-10-10 17-27-59.png
Neo4J Network Graph from Politikus data via Plone ReST API


This approach is currently being used for D4D Asia Hub, Malaysia's Freedom of Expression Cluster website and Sinar Project's revamped website.

D4D Asia's is most up to date, so the buildout is best one to check out the code and parts.

Plone talk on Rapidly Building Extensible Anti-Corruption site