e3tools / participatory-tool

Digital tool to support participatory processes such as participatory budgeting, PCRA, PVCA etc
0 stars 0 forks source link

General design #3

Open stevenyaga opened 8 months ago

stevenyaga commented 8 months ago

Why design each step separately?

Each step in a process is loosely coupled from other steps. This has the following advantages:

References

stevenyaga commented 8 months ago

Justification for using Frappe framework

  1. Meta-data driven. It is used to generate database tables, design forms and configure a lot of features. Meta-data is stored in a Model which is known as DocType in Frappe
  2. Form designer is highly advanced supporting all types of fields including map and file attachment3.
  3. The visual query designer allowing non-techies to create custom reports including group by, pivoting and aggregations
  4. Development of API is highly versatile allowing integration with other data stores/sources
  5. Comprehensive audit trail ensures that data modifications is tracked at field level
  6. Inbuilt Insights module allowing business intelligence operations like trends, charts and dashboards
  7. Users, Roles and Permissions. Frappe comes with User and Role management out of the box. A User is someone who can login to the system and perform authorized actions like creating, updating or deleting records. A Role is a mapping of DocTypes and actions allowed to perform on it.
  8. Responsive design inbuilt allowing rendering on all device sizes
  9. Support for different views for a Doctype i.e Listview, Kanban, Calendar and Report. Listview supports paging, filtering, sorting and bulk editing records. The Form View used for editing records also supports file attachments, PDF format, comments, email, etc. The Report Builder supports adding columns, grouping, filtering, sorting and saving it as a configuration. CalendarView allows visualizing dated records in form of a calendar
  10. Email: Frappe supports sending and receiving emails, which can also be linked to individual documents
  11. Printing. Frappe supports generating PDF print formats based on Jinja Templates. It also comes with a drag-and-drop Print Format Builder.
  12. Python, JS and MariaDB. Frappe Framework uses Python for the backend. It comes with a simple yet powerful ORM as an abstraction over CRUD operations. The default database is MariaDB. Postgres support is in beta. The front-end is an SPA built using Javascript (jQuery).
  13. Background Jobs. Frappe also supports background job queuing based on Python RQ.
  14. Multi Tenant. Supports multi-tenancy out of the box. It means you can spin up multiple instances of apps with separate databases on the same codebase.
stevenyaga commented 7 months ago

Features

The platform will have different tools that the public can engage in. Examples are:

  1. Surveys. Drill down and capture quantifiable data using a variety of question types and rich media
  2. Q&A. Allow people to ask questions
  3. Stories. Allow community to listen, understand, and relate to others
  4. Discussion forums. Moderated interactive spaces for considered discussion and dialogue by community
  5. Guestbook i.e simple online feedback without dialogue
  6. Quick polls. Allow you to ask a single question and capture snapshot of sentiment or priorities
  7. Submissions. When formal responses are required. Accept, review and post submissions from your community
  8. Mapper. Interactive mapper to gather comments, surveys and photos on a map with a simple pin drop
  9. Ideas/brainstorming. Post notes for brainstorming in the early or divergent stages of community engagement.

See https://demonstration.engagementhq.com/ and https://youtu.be/F_IhLa54w2U and https://conversation.auspost.com.au/national

stevenyaga commented 7 months ago

A separate front end will be built that will allow users to interact with the system.

stevenyaga commented 7 months ago

More features

stevenyaga commented 6 months ago

Finer implementation

To achieve versatility in the tool, the logic is designed as follows:

  1. The system has a concept of Engagement. An engagement refers to any undertaking by the county. This might involve single-sided communication e.g where users are submitting complaints, or it may be bi-directional for example in cases of participatory budgeting
  2. An engagement can have multiple engagement types. For instance, we can have form-based data collection while at the same time accepting comments from the public around the same engagement. The support for this multiple engagement types allows the system to aggregate all manner of data around an engagement. E.g a county can have a view of data collected using forms while at the same time have access to comments/feedback received from the public during a budgeting cycle
  3. Data capture will be done primarily via the frontend. The backend still has support for the same
  4. Action plans are developed around an engagement. See #16 . This will enable linking of interventions/actions to a specific engagement. Members of the public will be able to track status of their proposals
stevenyaga commented 3 months ago

More links: