ushahidi / platform

Ushahidi Platform API version 3+
http://ushahidi.com
Other
665 stars 502 forks source link

Familiarize yourself with Ushahidi's technical documentation, the WhatsApp Business API, and any relevant libraries or frameworks planned for the project. #4753

Open dukedanny opened 2 months ago

dukedanny commented 2 months ago

Pre-Task 1 is a bit of prep work & involves the following: Familiarizing yourself with the existing documentation and APIs relevant to the WhatsApp integration project for Ushahidi: https://documenter.getpostman.com/view/24695099/2s8YszQWLi#edea2038-8abc-4631-b68b-aad5cc6a04ad (FYI: This is for reference only, as improvements are being made to reflect V5)

Review Ushahidi's technical documentation: https://docs.ushahidi.com/platform-user-manual/

Explore the WhatsApp Business API documentation: https://developers.facebook.com/docs/whatsapp/cloud-api

Explore documentation for your planned libraries or frameworks: Flask or Django frameworks for building the Ushahidi integration backend API.

Review Infobip libraries for interacting with the WhatsApp Business API: https://www.infobip.com/whatsapp-business

Libraries for connecting to and interacting with databases, making HTTP requests to external APIs, parsing HTML content for data extraction, Redux library for managing the application state effectively, especially if dealing with complex data updates from WhatsApp messages.

Explore UX for modular design of elements for adding, removing, and configuring WhatsApp channels, viewing incoming messages, and moderating content

Explore mechanisms that might be needed to ensure only authorized users can access and manage WhatsApp data sources within the Ushahidi platform

Explore Cypress testing framework to ensure functionality and reliability of components

Deliverables due 13.03.2024: In the comment section of https://github.com/ushahidi/platform/issues/4753 Briefly summarize your understanding of the key features and functionalities of Ushahidi relevant to the project. Provide feedback on the suitability of proposed libraries or frameworks based on your initial review.

jatinder14 commented 2 months ago

Hi @dukedanny @CeciliaHinga Finally The wait is over. I am ready to give my best shot and get assigned with this project.

jatinder14 commented 2 months ago

Key Features and Functionalities of Ushahidi Relevant to the Project:

WhatsApp Integration: Ushahidi supports WhatsApp integration through Twilio, allowing users to enable their numbers for WhatsApp. Messages from WhatsApp are presented under the "SMS" source in the platform.

Version 5 API: Ushahidi has introduced version 5 of its REST API, accommodating new features like Entity Translations and improving the ease of retrieving resources, covering the basics of posts and surveys.

Entity Translations: This feature enables deployers to add multiple languages and translate content under surveys, posts, and categories into different languages, enhancing accessibility for regions with multiple languages.

Web Monetization and Donations Feature: Ushahidi supports Web Monetization, allowing donations to sectors or grassroots organizations directly through Ushahidi deployments.

API Modernization: The platform is undergoing API modernization to rewrite existing endpoints in version 5, restructure the v5 API, and transition from Lumen to Laravel, making it easier to add new features without rewriting the entire codebase.

Feedback on Proposed Libraries or Frameworks:

Flask/Django for Backend: Both Flask and Django are suitable. Django may offer more out-of-the-box features for complex applications, while Flask is lightweight and suitable for simpler projects.

Infobip for WhatsApp API: Infobip libraries are recommended for interacting with the WhatsApp Business API due to detailed API documentation and 24/7 support.

Database Interaction and HTTP Requests: SQLAlchemy (for database interactions), Requests (for HTTP requests), and BeautifulSoup (for HTML parsing) are suitable. Redux can be used for managing application state, especially in frontend applications dealing with complex data updates from WhatsApp messages.

UX/Security/Testing Considerations:

Modular Design for UX:

Design user interface modules for adding, removing, and configuring WhatsApp channels in Ushahidi. Ensure intuitive navigation and understanding of each module's purpose. Security Measures:

Implement role-based access control (RBAC) and secure authentication for authorized access to WhatsApp data in Ushahidi. Define user roles, permissions, and use secure authentication protocols like OAuth. Cypress for Testing:

Use the Cypress testing framework to verify the reliability and functionality of components handling WhatsApp Business API interactions in Ushahidi. Set up automated tests, run them regularly, and collaborate with developers, to integrate testing into the development lifecycle.

@dukedanny @CeciliaHinga

darrenodi commented 2 months ago

Hello, I'm Darren Odi from Cameroon. After reviewing the relevant documentation, I understand that Ushahidi is a versatile platform for collecting and managing data in crisis areas and international development. It offers features like bulk actions and maps for precise location identification. Considering the popularity of WhatsApp as a communication medium, integrating it into Ushahidi seems essential.

Regarding technical specifications, Ushahidi's backend API is built on PHP using Laravel, while the web client uses Angular and the mobile client is developed with Ionic. I suggest using the WhatsApp Cloud API for sending and receiving messages. Based on my testing, Infobip's WhatsApp Business integration works well, making it a suitable choice for our project. By combining Ushahidi's capabilities, the proposed libraries, and the WhatsApp Cloud API, we can enable real-time citizen reporting and make a positive impact in our community.

shalini1008 commented 2 months ago

Hello, I'm Shalini from India. After going through the relevant documentation the point I conclude are:

  1. Ushahidi is non-profit technology company which actually work for human rights and for society . It is platform for collecting and managing the data . It is working in changing in flow of data in good way.
  2. Now in technical term ,It is basically work majorly in backend ,connecting API and collecting data through SMS , twitter and now We have new project to integrate through WhatsApp. Ushahidi use to work on v3 but now they are moving to mzima what is new here, it is first the interface and then backend API is built on PHP using Laravel.
  3. I have also read through the document about WhatsApp API which is cloud API work basically on graphic API it is by meta(Facebook)
  4. I personally feel cloud API will be more better for sending and receiving message, as it is more flexible as in Laravel can be used to build web applications, but it doesn't inherently provide messaging services like WhatsApp integration.
  5. So with the help of Ushahidi's and WhatsApp Cloud API, we can enable real-time citizen reporting and make positive impact in our society as It basically work for election which is right of all human begin it is good for the society to grow and to have fair leader for us.
  6. we are integrating by WhatsApp as it most friendly user and now let me talk about more backend knowledge I gather by reading documentation is Upon thorough evaluation, both Flask and Django emerge as formidable contenders for powering the API backend, each exhibiting distinctive advantages. However, a pragmatic approach suggests integrating the WhatsApp API as an extension within the existing PHP backend. This strategy circumvents the challenges inherent in managing multiple backend projects, ensuring consistency across frameworks and programming languages.
  7. Infobip libraries helps in interacting with the WhatsApp Business API and helps facilitate communication with WhatsApp, handling messages, authentication, and other necessary operations. Thankyou, these are the all learning I concluded in short
ademolaomosanya commented 2 months ago

Hello my name is Ademola, i'm an outreachy appliciant and a full stack web developer. i would love to contribute to this project. have gone through the documentation and this is my summary.

  1. Ushahidi Platform:
  1. WhatsApp Business API:
  1. Libraries and Frameworks:
  1. UX for Modular Design:
  1. Authorization Mechanisms:
  1. Testing Framework:
shailpujan88 commented 2 months ago

Hey there, I’m Shail Pujan from India and I’m a passionate developer who believes in community development as a whole and looking to contribute to open-source

Ushahidi Ushahidi is a non-profit tech organization committed to revolutionizing the global dissemination of information. It functions as a platform for collecting, organizing, and presenting data culled from various sources, including SMS, email, web reports, mobile apps, and Twitter. This tool empowers users to manage and prioritize submissions through the use of filters and workflows. Additionally, data can be visualized and analyzed in different formats, such as maps, lists, charts, and tables, via the activity view.


Review on Proposed Libraries

Backend:

A thorough assessment reveals that both Flask and Django possess remarkable potential for the API backend, each boasting unique strengths. However, for a practical approach, integrating the WhatsApp API as an added feature within the existing PHP backend is recommended. This strategy avoids the complexities associated with managing multiple backend projects and ensures consistency in the chosen frameworks and programming languages.

In the event that the API is designated to function as an independent project, a strong inclination leans towards Django. This preference is rooted in extensive experience with Django and its robust feature set, which facilitates seamless integration. Django's architecture is well-suited for constructing a reliable and scalable backend for WhatsApp integration, rendering it an ideal choice for this specific endeavor.


UI/UX In crafting the user experience (UX) for adding, removing, and configuring WhatsApp channels, a paramount consideration is the emphasis on simplicity and intuitiveness. Every element within this process must possess a clear and distinct purpose, readily accessible to users. The adoption of modular design principles becomes imperative, fostering both flexibility and scalability in the management of WhatsApp channels within the Ushahidi platform. This approach entails the deconstruction of the interface into modular components, thus enabling easy rearrangement or modification to cater to diverse user requirements.


Authorization and Security To ensure only authorized users can access and manage WhatsApp data sources within the Ushahidi platform, robust authorization mechanisms are crucial. Two-factor authentication could enhance security, given the sensitive nature of the data.


Cloud API The Cloud API, hosted by Meta, allows you to send and receive messages using a cloud-hosted version of the WhatsApp Business Platform. This API eliminates the need for hosting your own servers and also allows for easier scaling of your business messaging. The Cloud API is built on Graph API, so requests are expressed using the HTTP protocol and combinations of URL parameters, headers, and request bodies.


WhatsApp Business API When considering the integration of the WhatsApp Business API into the Ushahidi platform, Infobip emerges as the top contender among its alternatives. While Twilio, 360dialog, and Chat API are viable choices, Infobip stands out as the preferred option due to its unmatched global presence, robust feature suite, and demonstrated reliability.

Infobip offers thorough documentation and strong support, equipping developers with the necessary resources for seamless incorporation of WhatsApp functionalities into the Ushahidi platform. Moreover, Infobip's established reputation and track record in the industry inspire confidence in its dependability and effectiveness. With a multitude of respected companies relying on Infobip for their communication requirements, it is clear that Infobip is a trusted partner for businesses and organizations alike.

I attempted to create a mind map for better comprehension and have provided it below.

image
anushk4 commented 2 months ago

Hello, I am Anushka Srivastava from India, an Outreachy applicant. I loved the vision of Ushahidi and I am interested in contributing to this project.

Based on my research, Ushahidi is a non-profit technology company founded in Nairobi, Kenya. Ushahidi is working to change how information flows in the world, and it aids communities in turning information into action using crowdsourcing and mapping tools and strengthening these communities. It uses citizen-generated data to develop solutions to currently existing humanitarian issues, like disaster relief, human rights protection, and the protection of democracy, by visualizing the data into maps and graphs. This platform helps bridge the gap between the citizens, bringing transparency to their issues, and the organizations and the government, who use this platform to plan their strategy to respond to these issues effectively.

In recent years, WhatsApp has become one of the most widely used tools for interconnecting people and communities and aiding communication between them. Integrating WhatsApp with the Ushahidi platform provides another way to collect data, and this positively impacts the platform's user experience due to the user’s familiarity with WhatsApp’s interface. Integrating WhatsApp into this platform will encourage more users to amplify their voices and share their issues.

Current framework:

After upgrading from the v3 platform and moving to the Mzima platform, the backend has been upgraded to a PHP web framework named Laravel for enhanced performance, scalability, and productivity. Further, V5 of REST APIs seamlessly extends the capabilities to other web/SMS-based applications. Other backend frameworks involved are Linux systems, Apache, and MySQL/PostgreSQL for database management. The platform's front end uses Javascript, HTML, and CSS, as well as modern Angular 14+ and the Angular material library for styling, along with NodeJS. The mobile client is built using the Ionic framework.

Proposed frameworks:

1) WhatsApp Cloud API: This API was developed by Meta and can send and receive messages using a cloud-hosted version of the WhatsApp business platform. This would be a cost-effective solution as it eliminates the need to host our own servers. Additionally, the scalability, reliability, and ease of use make it an excellent option to consider to integrate WhatsApp with the platform. 2) Flask/Django: Both are popular web frameworks for building the backend. However, Flask is a lightweight microframework much more suitable for smaller projects. Django will be a better option as it has more built-in features and can be used for more extensive and complex applications. 3) Infobip libraries: This helps in interacting with the WhatsApp Business API and helps facilitate communication with WhatsApp, handling messages, authentication, and other necessary operations. 4) Additional frameworks:

Jipheens commented 2 months ago

Having thoroughly reviewed the documentation provided, I'm impressed by the depth of insight into the Ushahidi platform and its potential for transforming global information dissemination, especially in crisis situations and international development efforts. The proposed integration of WhatsApp into Ushahidi appears to be a strategic move, leveraging the widespread adoption of WhatsApp to enhance real-time citizen reporting capabilities.

The technical specifications outlined, including the use of PHP with Laravel for backend development and the consideration of frameworks like Flask/Django, reflect a thoughtful approach to ensuring the project's success.

I'm particularly intrigued by the emphasis on utilizing existing technologies like Infobip libraries for seamless WhatsApp integration and the meticulous selection of frameworks for database interaction, HTTP requests, and testing methodologies such as Cypress. These aspects indicate a well-planned strategy aimed at achieving the project's objectives effectively.

In summary, the insights gained from the documentation provide a clear understanding of the project's scope and the necessary steps for its implementation. I am optimistic about the potential positive impact this initiative will have on communities worldwide and look forward to contributing to its success.

wanjiru-njuguna commented 2 months ago

Hello everyone, my name is Wanjiru Njuguna, an Outreachy May 2024 applicant, from Nairobi, Kenya. I love what Ushahidi is doing and I am super pumped to start contributing to the project. I have gone through the recommended materials and here is what I gathered.

Ushahidi meaning testimony was started in a time of need in its country of origin, Kenya, during the 2008 post-election violence. The tools built and programs run by Ushahidi aim at giving the marginalized a voice.

I gathered that the Ushahidi platform is geared towards bridging the information gap between governments and their citizens, as well as people raising awareness and seeking help for themselves in a crisis.

Ushahidi is a tool for collecting data, which can be done using mobile apps, social media apps, etc. The tool also manages data by using features such as filters and it also visualizes data, which can be done in many different ways like tables, charts, etc.

Key features: Ushahidi has built six open-source software products: the Ushahidi Platform, SMSsync, Crowdmap, SwiftRiver, CrisisNet, and TenFour.

The Ushahidi Mzima backend is built on PHP stack, while the client side is a separate app built with Javascript, HTML and CSS. The proposed Django framework is particularly my inclination. Django is fast, but also very flexible. Being a full-stack framework, Django can be used to build the Ushahidi platform without having to maintain a separate client side app.

Erickkaranja commented 2 months ago

Hello, I am Erick Karanja from Kenya and i would like to contribute on the above issue. Ushahidi backend is built on PHP laravel framework.For a given authenticated user to upload data, the user can only upload the data though email, SMSsyc and csv files to their deployment platform. Whatsapp integration will be key in sending and receiving of data to the Ushahidi platform.This is due to its key advantages such as widespread use in the world, instant messaging capabilities and cost effective communication. Meta's cloud API will provide seamless integration of Whatsapp to the Ushahidi platform.To work with the cloud API, we need to authenticate and authorize our users. The cloud API offers several feature that we could incorporate in our project, this includes one way or two way communication, templating categories and webhooks services. infobip libraries will enable us integrate Whatsapp to Ushahidi platform.As infobip offers different programming languages option for integration, python framework flask or Django can be employed in the integration.Python offers different libraries to interact with Ushahidi MySQL or PostgreSQL databases.This libraries can be pure adapters/connectors or Object Relational Mappers(ORM). I suggest on the use of ORM such as sqlalchemy( i will consult further from a mentor). Depending on the project requirements, HTTP requests to external APIs can be made using the various python libraries such as requests, HTTP.client and urllib. lxml and HTML.parser libraries can be used to parse our incoming data from HTML files. Ushahidi frontend platform uses JavaScript, HTML, and CSS, as well as modern Angular 14+. This tools will be essential in integrating the developed Whatsapp integrated system to our users.For modular design for the UX i suggest Component-Based Architecture to create modular, reusable components for different functionalities. Each component should encapsulate a specific feature or set of features related to WhatsApp integration, such as adding channels, viewing messages, or moderating content.Further, redux library can be employed to manage the state of our components.Cypress is the open-source and free test automation tool. It can be used for front end and application programming interface (API) test automation.

larrytamnjong commented 2 months ago

Hello @dukedanny I am Tamnjong Larry Tabeh

Ushahidi's mission is to strengthen marginalized communities by facilitating the crowdsourcing, management, analysis, and visualization of information. This mission serves as a foundation for the WhatsApp integration project. Ushahidi excels in collecting grassroots data or testimonies, as implied by its name.

Ushahidi offers versatile features for data collection through SMS, Email, mobile applications, and the web platform. Integrating WhatsApp into Ushahidi's data collection sources holds the potential to enhance citizen reporting inclusivity. With billions of users and widespread availability on almost all smartphones, WhatsApp can significantly broaden the reach of the Ushahidi platform to local communities.

Libraries and framework reviews for WhatsApp integration

Flask/Django:

In my review, both Flask and Django showcase excellent possibilities for the API backend, and either of them is a great choice. However, from a practical standpoint, I would recommend incorporating the WhatsApp API as additional functionality within the existing backend built in PHP to avoid managing multiple project backends and keep consistency in the framework and programming languages being used. If, however, the API is intended to be a separate project, I would strongly suggest using Django. My preference for Django is based on my prior experience with it, and its robust features and easy integration possibilities which make it a great choice for constructing a reliable and scalable backend for the WhatsApp integration.

UI/UX:

The platform dashboard currently includes the Data Source Module (Found in Settings > Data Sources), allowing users to activate, choose, and configure various data sources. This module can be expanded to include adding WhatsApp as a data source. Additionally, it can facilitate further customization of the WhatsApp Data Source, enabling users to set up channels, groups, and other relevant configurations.

General Libraries:

After reviewing libraries for state management, database connectivity, testing, and data parsing, the requests library can be effectively utilized in the Django backend to handle external API requests, parsing, and other related tasks. Database connectivity is already seamlessly managed in Django out of the box.

It's worth noting that the Ushahidi platform is built on Angular, and we can seamlessly integrate the NgRx state management library (Which is the best statement solution for Angular). This integration will enable real-time reception and updates of WhatsApp messages and similar functionalities. This consideration is made with the understanding that the WhatsApp integration frontend will be developed within the existing platform dashboard, ensuring a cohesive user experience.

WhatsApp Business API

Reviewing the WhatsApp Business API and the libraries available for its integration has been a top priority for me, recognizing that selecting the right API is one of the most important factors for effective integration. I examined the Infobip API, which offers promising integration possibilities. Additionally, I explored another WhatsApp integration API, 2Chat API, and found its documentation to be more detailed and easier to understand and implement than that of Infobib. I also looked at the pricing for using both libraries.

Furthermore, I took some time to create a WhatsApp Business Account and explored the potential for direct integration from WhatsApp itself, as opposed to relying on third-party integration tools. During this review, I discovered a crucial consideration: integrating directly would exclude the possibility of utilizing chatbots, a feature provided by third-party libraries. This insight highlights the importance of carefully weighing the trade-offs between direct integration and utilizing external tools based on the specific needs of the project.

tony-nyagah commented 2 months ago

Hello, my name is Antony Nyagah from Kenya and I am glad to be contributing to the Ushahidi project.

What is Ushahidi?

Ushahidi was developed in 2008 as a tool to monitor and map post-election violence in Kenya.
Since then it has grown into a global not-for-profit technology company that develops tools and services to enable people to generate solutions and mobilize the community for the better good.
Ushahidi builds open-source software with the intent of strengthening communities and improving lives, enabling users to rapidly and purposefully together, analyze, respond, and act on data and information together.

The project we will be working on is the Ushahidi Platform project, built with Angular and Laravel, which allows crisis response, human rights reporting, and election monitoring. The key features of Ushahidi relevant to the project include:

A review of the proposed libraries

Backend Libraries

Django vs Flask

Django and Flask are the proposed libraries to create the backend API.
Flask is a lightweight micro-framework ideal for simple, extensible web apps, while Django is a full-featured framework best for scalable, feature-rich projects. Flask offers flexibility and a “build from scratch” approach, while Django comes with many built-in tools for rapid development. Both are excellent, but their suitability depends on the project's needs.
In terms of the overall developer experience, Django is more suited to larger projects and Flask is more suited to smaller projects. This is because Django comes with a lot of features already built into it like an admin interface, templates, and an ORM(Object-Relational Mapping) model using Jinja2-like syntax. To achieve most of the functionality that comes out of the box with Django, Flask relies on third-party libraries like Flask-SQLAlchemy, Flask-Migrate, and Flask-Admin.
For the backend API development, I'd recommend Django over Flask.

Database connection libraries

There are a few options in regards to making database connections depending on whether Django or Flask is used.
Both these libraries use an ORM to make connecting to a database easier for developers. Django has a built-in ORM that uses Jinja2 syntax while Flask requires the use of the Flask-SQLAlchemy library.
This is yet another reason why I'd recommend Django over Flask.

WhatsApp Business API and Infobp WhatsApp Business Platform

The WhatsApp Business API is designed for medium and large businesses to communicate with their customers on a large scale. Its features include:

The Infobp WhatsApp Business Platform is perfect for integrating WhatsApp features into an application due to it's ease of use. It's also used by several reputable companies which is a good sign.

Testing libraries

In regards to testing for the backend API, since it is using Django or Flask, Pytest is highly recommended. It has a lot of plugins that make tests easier to write and run.
Cypress is a JavaScript testing framework that is both battle-tested and popular. It enables writing everything from end-to-end tests to unit tests using an easy-to-read syntax.

Exploring UX for modular design

To better explore UI/UX design I have taken to reading and implementing the Refactoring UI book. Through implementing UI/UX design patterns in this book we can make an application that is both user friendly and accessible.

Ensuring authorization of users

There are many ways to ensure authorization through Django or Flask such as JWT or OAuth2.
We can also implement two-factor authentication since we're using WhatsApp.

pragya-p-github commented 2 months ago

Hello everyone, I'm Pragya Paliwal from India after a thorough review I would like to summarize your understanding.

Ushahidi's Mission: Ushahidi is a non-profit tech company focused on empowering marginalized communities by transforming global information flow. It has developed open-source tools to amplify voices during critical situations and foster transparency in various domains. Ushahidi provides a range of options for data collection, including SMS, Email, mobile apps, and web platforms. By integrating WhatsApp into these sources, Ushahidi can expand its reach and make citizen reporting more inclusive. With its immense user base and availability on most smartphones, WhatsApp has the potential to greatly extend Ushahidi's impact to local communities.

Libraries and Framework from WhatsApp Integration : For Backend : Django and Flask are both considered for building the backend API. Flask is a lightweight micro-framework, ideal for simpler and more adaptable web applications. On the other hand, Django is a comprehensive framework, well-suited for scalable and feature-rich projects. In terms of developer experience, Django tends to be preferred for larger projects, owing to its extensive built-in features for rapid development. In contrast, Flask often relies on third-party libraries. I would recommend Django because of it's scalability.

For Testing: Pytest and Cypress are recommended for backend and frontend testing, ensuring functionality and reliability.

WhatsApp Business API: In my thorough review of WhatsApp Business API options, I found Infobip's platform to be user-friendly and widely used by reputable companies, indicating its reliability and suitability for integrating WhatsApp features seamlessly into our application. Additionally, I delved into the possibility of direct integration with WhatsApp, recognizing its limitations in chatbot support compared to third-party solutions. The WhatsApp Business API offers extensive features tailored for medium to large businesses, including global reach, automated messaging, and programmatic access. Hosted by Meta, it provides both cloud and on-premises options for ease of implementation and scalability. Its Business Management API ensures secure authentication and authorization for managing account settings and assets.

For UI/UX: I'm reading article and blogs for understanding the user needs and what are the modular designs that are user friendly for the project.

Authorization and Security: Authorization mechanisms like JWT or OAuth2 to ensure secure access to WhatsApp data sources. Two-factor authentication could enhance security, given the sensitive nature of the data.

cindy-purity commented 2 months ago

Hello I am Cindy Purity from Kenya and I am honored to contribute to this project. After going through the overview of Ushahidi, this is a summary of my understanding :

Ushahidi: A Powerful Tool for Democratizing Information Ushahidi is a Kenyan-born non-profit organization aiming to revolutionize information flow globally. Ushahidi's platform offers a broad range of functionalities, catering to a diverse user base. While its functionality is accessible to all, it has seen particular adoption among crisis responders, human rights reporters, and citizen-government initiatives (e.g., election monitoring or anti-corruption efforts). Additionally, the platform serves environmental mappers, asset monitoring teams, citizen journalists, international development organizations, and various other stakeholders.

Ushahidi's Mission and Origins:

Founded in Nairobi during the 2008 Kenyan election violence, Ushahidi (meaning "testimony" in Swahili) leverages technology to empower individuals and communities.

Global Impact:

Ushahidi's open-source platform has seen extensive deployment – over 100,000 times across 159 countries, supporting 45 local languages. This has facilitated the collection of 7 million testimonies, reaching nearly 20 million people worldwide.

Software Suite:

Ushahidi offers a robust suite of open-source software products:

Ushahidi Platform: Core platform for data collection, management, and visualization. SMSsync: Enables data collection via SMS. Crowdmap: Focuses on collaborative mapping efforts. SwiftRiver: Streamlines data collection and analysis from various sources. CrisisNet: Designed specifically for crisis response scenarios. TenFour: Facilitates information sharing and collaboration during elections. Ushahidi's Network:

Ushahidi has fostered a network of six organizations that share a common vision: utilizing technology to empower access to information, improve decision-making, and ultimately transform information flow on a global scale.

Ushahidi's Functionality:

Ushahidi's core strength lies in its ability to collect, manage, and visualize data. This data can be crowdsourced from anyone, anywhere, and at any time via SMS, email, web reports, mobile applications, and even Twitter. The platform offers robust data management features with filters and workflows, allowing for efficient organization and analysis. Additionally, Ushahidi empowers users to visualize data in various formats, including maps, lists, charts, and tables, through its activity view.

Ushahidi stands as a powerful tool for democratizing information, fostering transparency, and empowering communities around the world.

jatinder14 commented 2 months ago

Key Features and Functionalities of Ushahidi Relevant to the Project:

WhatsApp Integration: Ushahidi supports WhatsApp integration through Twilio, allowing users to enable their numbers for WhatsApp. Messages from WhatsApp are presented under the "SMS" source in the platform.

Version 5 API: Ushahidi has introduced version 5 of its REST API, accommodating new features like Entity Translations and improving the ease of retrieving resources, covering the basics of posts and surveys.

Entity Translations: This feature enables deployers to add multiple languages and translate content under surveys, posts, and categories into different languages, enhancing accessibility for regions with multiple languages.

Web Monetization and Donations Feature: Ushahidi supports Web Monetization, allowing donations to sectors or grassroots organizations directly through Ushahidi deployments.

API Modernization: The platform is undergoing API modernization to rewrite existing endpoints in version 5, restructure the v5 API, and transition from Lumen to Laravel, making it easier to add new features without rewriting the entire codebase.

Feedback on Proposed Libraries or Frameworks:

Flask/Django for Backend: Both Flask and Django are suitable. Django may offer more out-of-the-box features for complex applications, while Flask is lightweight and suitable for simpler projects.

Infobip for WhatsApp API: Infobip libraries are recommended for interacting with the WhatsApp Business API due to detailed API documentation and 24/7 support.

Database Interaction and HTTP Requests: SQLAlchemy (for database interactions), Requests (for HTTP requests), and BeautifulSoup (for HTML parsing) are suitable. Redux can be used for managing application state, especially in frontend applications dealing with complex data updates from WhatsApp messages.

UX/Security/Testing Considerations:

Modular Design for UX:

Design user interface modules for adding, removing, and configuring WhatsApp channels in Ushahidi. Ensure intuitive navigation and understanding of each module's purpose. Security Measures:

Implement role-based access control (RBAC) and secure authentication for authorized access to WhatsApp data in Ushahidi. Define user roles, permissions, and use secure authentication protocols like OAuth. Cypress for Testing:

Use the Cypress testing framework to verify the reliability and functionality of components handling WhatsApp Business API interactions in Ushahidi. Set up automated tests, run them regularly, and collaborate with developers, to integrate testing into the development lifecycle.

@dukedanny @CeciliaHinga

jsamiksha1 commented 2 months ago

Hello! My name is Samiksha Jain.

I am an Outreachy applicant from India. I have gone through the recommended material and I would like to summarize my understanding.

Ushahidi

Ushahidi is a powerful platform designed for crowdsourcing, visualizing, and analyzing data. They're now integrating WhatsApp into their platform, aiming to expand citizen reporting inclusivity. This move leverages WhatsApp's widespread usage and accessibility to reach even more people in local communities.

Framework and Libraries

I favor Django for building the Ushahidi integration backend API due to its comprehensive features and ease of use. Django provides built-in tools for tasks like authentication and database management, streamlining development and saving time. Its robustness and scalability make it ideal for handling real-time citizen reporting efficiently.

WhatsApp Business API

For the Ushahidi project, considering its tech stack and ease of implementation, Twilio and Infobip emerge as strong choices among the four service providers (Twilio, Infobip, 360dialog, and Chat API *) for integrating WhatsApp Business API. Both Twilio and Infobip offer comprehensive documentation, robust APIs, and support for various programming languages, making them well-suited for seamless integration with Ushahidi's existing infrastructure.

For testing

As a developer, I personally prefer using pytest for testing in the Ushahidi project, especially when Django is chosen for building the backend API. Pytest's simplicity and compatibility with Django make it an ideal choice for ensuring the reliability and robustness of the API. Its clear syntax and extensive plugin ecosystem allow for writing comprehensive tests that cover various aspects of the Django application, from request handling to data validation. With pytest, I can easily organize and run tests, making the testing process efficient and effective. Overall, pytest aligns well with my personal preference for testing Django applications, ensuring the quality and stability of the Ushahidi project.

haruharu1017 commented 2 months ago

My understanding after reviewing by Anastasia

1. Ushahidi is a great company that builds digital tools and run programs to give marginalized people a voice. Their goal is to help people around world to share their voice during a critical situation, to ask for and generate support, and to bring transparency to their issues. Ushahidi has built six open-source software products: the Ushahidi Platform, SMSsync, Crowdmap, SwiftRiver, CrisisNet, and TenFour. Ushahidi mzima platform Backend API is built on PHP stack: as with v3 platform. The mzima platfrom API uses the Laravel framework. The user interface of Ushahidi mzima platform is a separate app with a codebase that has the web client and mobile client in it. The web client is built with Javascript, HTML + CSS using modern Angular 14+ and the Angular material library for styling. The mobile client is built using the Ionic framework. 2. I learned the basic use of Ushahidi platform, including making deployment, and functionalities of general settings. I could create surveys task in setting module, access to data sources, manage people on my deployment, manage map and other data on my deployment. 3. The Cloud API, hosted by Meta, allows businesses to communicate with customers on a large scale by combining satellite and ground data to meet policy needs. It is built on the Graph API and utilizes the HTTP protocol for requests, which include URL parameters, headers, and request bodies. This API is particularly useful for medium and large businesses looking to connect with thousands of customers through both automated and manual communications, integrating with backend systems like CRM and marketing platforms for streamlined operations. 4. WhatsApp offers various message types through its API:

crocmons commented 2 months ago

My Exploration of Ushahidi Integration with WhatsApp Business API for Effective Crisis Response

Introduction:

Hello! I'm Ilma Salsabil, an impassioned individual from Bangladesh, presenting a comprehensive plan to integrate Ushahidi, a globally recognized information-sharing platform, with the WhatsApp Business API. This initiative aims to revolutionize crisis response capabilities by empowering marginalized communities to report critical situations and voice their concerns effectively, fostering more efficient and inclusive response mechanisms.

Key Features and Functionalities of Ushahidi:

Ushahidi, a non-profit technology company, is celebrated for its innovative approach to information dissemination on a global scale. With a strong commitment to empowering marginalized communities, Ushahidi offers a suite of digital tools and programs, including its flagship product, the Ushahidi Platform. This open-source tool is instrumental in human rights activism, crisis response, and transparency efforts, with over 100,000 deployments across 159 countries. Ushahidi's mission revolves around amplifying voices during crises and facilitating effective responses through meticulous data analysis.

Selecting the Right Tools:

When I set out to build this project, I needed to choose the best tools for the job. Among the options available, I decided to go with Django, a powerful web framework in Python. Here's why:

1. Versatility:  Django offers a wide range of features and functionalities right out of the box. It provides robust solutions for handling user authentication, database management, and URL routing, among others. This versatility allows me to focus more on implementing the project's core functionalities rather than reinventing the wheel.

2. Integration with Other Libraries:  One of the key reasons for choosing Django is its seamless integration with other libraries and frameworks. For instance, Redux, a popular JavaScript library for managing application states, can easily be integrated into a Django project. This integration ensures efficient management of complex data updates from WhatsApp messages, enhancing the overall reliability and scalability of the system.

3. Cypress Testing Framework:  Cypress is a powerful testing framework that simplifies the process of writing, running, and debugging tests for web applications. By choosing Django, I can seamlessly integrate Cypress into the project workflow, allowing for comprehensive end-to-end testing of the WhatsApp integration feature. This ensures that the application functions as expected and delivers a seamless user experience.

4. Infobip API Integration:  Integrating the Infobip API, which provides access to the WhatsApp Business API, is essential for enabling communication between the Ushahidi platform and WhatsApp users. Django's flexible architecture and extensive documentation make it easy to integrate external APIs like Infobip, enabling seamless communication and data exchange between different parts of the system.

Overall, by selecting Django as the primary framework for this project, I aim to leverage its versatility, integration capabilities, and robust ecosystem to build a reliable and scalable solution for integrating WhatsApp with the Ushahidi platform. This decision aligns with our goal of streamlining development processes and ensuring the seamless integration of various components to deliver a user-friendly and efficient solution.

Plan for Adding the WhatsApp Business API:

The integration plan is based on utilizing the WhatsApp Cloud API to facilitate communication with WhatsApp Business users. Leveraging libraries from Infobip, the integration will streamline the process of sending and receiving messages through the WhatsApp Business API. To ensure data integrity, stringent permission and authentication procedures will be implemented. API endpoints will be established to process data, handle incoming messages, and facilitate platform connections. Modular design principles will enable customization of WhatsApp channels, enhancing flexibility and scalability. Django and Redux will be employed for application state management, facilitating the handling of complex data changes. Cypress will facilitate end-to-end testing to ensure seamless integration and accurate message handling.

Decoder-25 commented 2 months ago

Hi, my name is Disha Biswas and I am from India.**

Understanding of Ushahidi's Key Features and Functionalities:

Ushahidi, a non-profit technology company, provides digital tools and programs aimed at giving marginalized people a voice and facilitating crisis response, human rights activism, and transparency. The Ushahidi Platform, meaning "testimony" in Swahili, serves as an open-source tool for information collection, visualization, and interactive mapping. Here's a breakdown of its key features and functionalities:

  1. Data Collection and Visualization: I find it fascinating how Ushahidi facilitates seamless data collection from diverse sources, including social media, SMS, and email. Its customizable forms streamline structured data entry, while the platform's mapping capabilities offer intuitive visualizations of spatial data, facilitating trend identification and pattern analysis.

  2. Moderation and Quality Assurance: One thing I've noticed is Ushahidi's strength lies in its moderation functionalities, empowering administrators like me to review and approve incoming data. This ensures data integrity and accuracy before dissemination, crucial for maintaining the credibility and reliability of information shared through the platform.

  3. API Integration: I'm impressed by Ushahidi's robust API ecosystem, enabling seamless integration with external systems. This interoperability expands the platform's utility across diverse industries and enhances its adaptability to various use cases.

Feedback on Proposed Libraries/Frameworks:

In anticipation of the upcoming WhatsApp integration project, I certainly suggest optimizations to Ushahidi's functionality and user experience:

  1. Framework Selection - Flask or Django:

    • Current State: I've noticed that the backend API is built on the PHP stack using the Laravel framework, ensuring better management of core logic.
    • Proposed Improvement: I believe introducing Flask or Django frameworks would enhance Ushahidi's backend capabilities by providing standardized patterns and structures for development. Django's built-in admin interface and ORM could streamline administrative tasks, while Flask's lightweight nature offers flexibility for customization.
  2. WhatsApp Integration - Infobip Libraries:

    • Current State: It seems Ushahidi lacks direct integration with the WhatsApp Business API.
    • Proposed Improvement: Leveraging Infobip libraries could facilitate seamless integration with the WhatsApp Business API, enriching Ushahidi's communication channels. This integration would empower users like me to collect real-time data and engage with stakeholders via WhatsApp, enhancing accessibility and responsiveness.
  3. Database and HTTP Request Libraries:

    • Current State: Based on what I've gathered, Ushahidi may utilize internal databases like MySQL or PostgreSQL and HTTP request mechanisms.
    • Proposed Improvement: Adopting libraries like SQLAlchemy for database operations and Requests for HTTP requests would enhance efficiency and maintainability. These libraries offer robust functionalities, abstraction layers, and comprehensive documentation, thereby streamlining development efforts and ensuring scalability.
  4. State Management - Redux Library:

    • Current State: It seems Ushahidi may lack a centralized state management system as its frontend is built using Angular, JavaScript, HTML, CSS with the web client using Platform Client (Mzima).
    • Proposed Improvement: I believe implementing Redux for frontend state management could provide a structured approach to handling complex data interactions, particularly relevant in the context of WhatsApp message updates. This centralized state management facilitates efficient data flow and simplifies debugging, thereby enhancing overall application stability and user experience.
  5. Testing Framework - Cypress:

    • Current State: I've gathered that Ushahidi might rely on manual testing procedures or traditional testing frameworks.
    • Proposed Improvement: Integrating the Cypress testing framework could elevate Ushahidi's testing capabilities, ensuring comprehensive coverage and reliability of components. Cypress's intuitive interface, real-time browser reloads, and automatic waiting features expedite the testing process, facilitating faster feedback loops and enhancing overall product quality.
sanazehra2001 commented 2 months ago

Hi, I am Sana Zehra, joining from Pakistan.

Introduction to Ushahidi:

Ushahidi is a non-profit technology company that empowers marginalized communities by facilitating the collection, visualization, and analysis of data. Originally developed in 2008 to monitor post-election violence in Kenya, Ushahidi has since evolved into a global platform used for crisis response, human rights reporting, and transparency efforts.

The Ushahidi Platform:

The Ushahidi Platform serves as an open-source tool for collecting, managing, and visualizing data from various sources, including SMS, email, web reports, mobile applications, and twitter. It enables users to report incidents and events, which are then visualized on maps and analyzed for trends and patterns.

Integration of WhatsApp into Ushahidi:

The project aims to integrate WhatsApp into the Ushahidi platform to expand citizen reporting inclusivity. This involves enabling communication via WhatsApp, processing incoming messages, and integrating WhatsApp channels within the platform.

Backend Framework Django vs Flask

Both Django and Flask are viable options for building the backend API for the Ushahidi integration project. Django, with its batteries-included approach, provides a comprehensive set of features, including an ORM, admin interface, and authentication system. This makes it well-suited for larger, feature-rich projects where rapid development is a priority. Flask, on the other hand, offers a lightweight and flexible micro-framework, making it ideal for simpler, more adaptable web applications. Considering the complexity and scalability requirements of the Ushahidi platform, Django emerges as the preferred choice. Additionally, Django's robust ecosystem and extensive documentation ensure long-term maintainability and support.

WhatsApp Business API Integration Options

Infobip clearly outshines its alternatives when it comes to integrating the WhatsApp Business API into the Ushahidi platform. While Twilio, 360dialog, and Chat API are commendable options, Infobip stands as the optimal choice due to its unparalleled global reach, robust feature set, and proven reliability. Infobip provides comprehensive documentation and robust support, offering developers the resources they need to seamlessly integrate WhatsApp functionalities into the Ushahidi platform. Additionally, Infobip's proven track record and reputation in the industry instill confidence in its reliability and effectiveness. With numerous reputable companies relying on Infobip for their communication needs, it's evident that Infobip is a trusted partner for businesses and organizations alike.

Connecting to and Interacting with Databases:

If Django is chosen for the backend API development, it comes with a built-in ORM (Object-Relational Mapping) that provides a convenient way to interact with databases. Therefore, there is no need for additional libraries like SQLAlchemy for database interaction when using Django. However, if Flask is chosen instead, SQLAlchemy would be a suitable choice for its robust capabilities in database management.

Making HTTP Requests to External APIs:

For making HTTP requests to external APIs, the ‘requests’ library in Python is a popular and reliable choice. It provides a simple and elegant API for sending HTTP requests and handling responses, making it well-suited for integrating with external services such as the WhatsApp Business API.

Parsing HTML Content for Data Extraction:

When WhatsApp Business API will be called by Ushahidi Platform, the content will be received in json format and not HTML. To read json files the backend will use Python’s built-in ‘json’ module and ‘parse’ library will be used to parse the content of the messages.

Redux Library for State Management:

Redux is a predictable state container for JavaScript applications, commonly used with React for managing application state in a more organized and efficient manner. However, since the frontend of the Ushahidi platform is built using Angular, Redux might not be directly applicable. Angular itself provides robust mechanisms for managing application state, such as RxJS for reactive programming and NgRx for state management in Angular applications.

Explore UX for Modular Design:

When designing the user experience (UX) for adding, removing, and configuring WhatsApp channels, it's essential to prioritize simplicity and intuitiveness. Each element should have a clear purpose and be easily accessible to users. Implementing modular design principles allows for flexibility and scalability in managing WhatsApp channels within the Ushahidi platform. This involves breaking down the interface into modular components that can be easily rearranged or modified to accommodate different user needs.

Explore Authorization Mechanisms:

To ensure only authorized users can access and manage WhatsApp data sources within the Ushahidi platform, robust authorization mechanisms are crucial. Role-based access control (RBAC) can be implemented to assign different levels of permissions to users based on their roles within the organization. For example, administrators may have full access to manage WhatsApp channels and messages, while regular users may have limited access for viewing purposes only. Additionally, secure authentication methods, such as OAuth2 (Google authentication), can be employed to verify the identity of users and prevent unauthorized access to sensitive data.

Explore Cypress Testing Framework:

Cypress is a powerful testing framework for web applications, offering features such as automatic waiting, real-time browser reloads, and easy debugging. When using Cypress to ensure the functionality and reliability of components within the Ushahidi platform, it's essential to define comprehensive test cases covering various scenarios. Cypress allows for both end-to-end testing and unit testing of individual components. By regularly running Cypress tests as part of the development process, any issues or regressions can be identified and addressed promptly.

@dukedanny @CeciliaHinga

Anshikaaggarwal commented 2 months ago

Hi there to all of you. I am Anshika Aggarwal from INDIA and I researched Ushahidi, here are my opinions regarding the initiative and organisation. Ushahidi is a non-profit organisation that addresses a crucial part of society: the marginalised people. For too long, these groups have been overlooked since they are a minority, but this platform provides them with the much-needed voice. By means of this endeavour, the governments are furthermore cultivating an awareness of the problems encountered by underprivileged groups. It functions by utilising a map, list, or other visual features to efficiently collect and manage data. TECHNICAL SPECIFICATIONS

  1. The project's technical specs are as follows: °A new version of the Laravel framework is utilised, which is the difference between the v3 and v5 platform.

  2. PHP is used to build backend APIs, whereas HTML, CSS, and Angular JS are used to build frontend and user stacks.

  3. The Ushahidi integration backend API is built using the Flask or Django frameworks.

Our job is to fix backend-related problems and enhance WhatsApp's user interface so that users may utilise it more conveniently and effectively. I tried making a mind map for better understanding and have attached it below MIND MAP

Tanyadw commented 2 months ago

Hello, Everyone! Tanya Dwivedi here, an aspiring Outreachy May 2024 applicant from India.

I'm thrilled to be part of this vibrant community and genuinely excited about the opportunity to contribute to Ushahidi .After reviewing the recommended materials and documentation, I've gained a profound understanding of Ushahidi's mission and the incredible work it does.

Introduction to Ushahidi

Ushahidi, meaning "testimony," emerged during a critical period in its home country, Kenya, amidst the turmoil of the 2008 post-election violence. The tools and programs developed by Ushahidi are dedicated to empowering the marginalized, providing them with a platform to voice their concerns and experiences.

### Key aspects of Ushahidi Platform

One of the key strengths of the platform lies in its ability to enable data collection through various channels such as SMS, Email, mobile apps, and web platforms. This versatility allows Ushahidi to serve as a powerful tool for information dissemination in times of need. Now, envision the impact of integrating WhatsApp into this ecosystem – a move that has the potential to significantly extend Ushahidi's reach and inclusivity. Considering the widespread user base and the accessibility of WhatsApp on most smartphones, this integration can bring a new level of engagement and participation. It opens up avenues for citizens to contribute to crucial data collection efforts seamlessly, making Ushahidi even more accessible to communities around the world.

### Technical Specifications:

Laravel Framework: The project embraces a new version of the Laravel framework, marking a transition from the v3 to the v5 platform. This upgrade brings in the latest features and enhancements offered by Laravel, ensuring a robust foundation for our development work.

Backend Technologies: PHP is the language of choice for constructing backend APIs. Known for its versatility and effectiveness in server-side development, PHP seamlessly integrates with the Laravel framework, forming a powerful backend combination.

Frontend Technologies: The frontend and user stacks are crafted using a trio of technologies - HTML, CSS, and Angular JS. HTML provides the structure, CSS takes care of styling, and Angular JS adds the dynamic and interactive elements to the user interface, creating a comprehensive and engaging frontend experience.

Ushahidi Integration Backend API: The backend API for Ushahidi integration is constructed using either Flask or Django frameworks. Flask, being lightweight and flexible, and Django, with its comprehensive set of built-in tools, offer options for creating a robust and scalable integration.

Testing: Pytest and Cypress are suggested for backend and frontend testing, ensuring the functionality and reliability of the integrated system.

Project Focus:

This Project's Primary responsibility revolves around fixing backend-related issues, addressing challenges, and optimizing the functionality of the backend APIs built with PHP, Laravel, Flask, or Django. In preparation for the forthcoming WhatsApp integration project, I propose several optimizations to enhance Ushahidi's functionality and user experience. 1)For database and HTTP request operations, adopting libraries like SQLAlchemy and Requests is advised to enhance efficiency and maintainability. 2)Implementing Redux for frontend state management could provide a structured approach, particularly relevant for WhatsApp message updates, improving application stability. 3)Integrating the Cypress testing framework would elevate Ushahidi's testing capabilities, ensuring comprehensive coverage and reliability of components, ultimately enhancing overall product quality. 4)In terms of framework selection, I suggest considering Flask or Django over the current PHP Laravel setup for the backend API.

User Interface Enhancement:

Another significant aspect of our role is to elevate the user interface of WhatsApp integration. Our aim is to make it more user-friendly, convenient, and effective, ensuring that users can leverage WhatsApp seamlessly within the Ushahidi platform.

In summary, our role involves addressing backend challenges, working with different technical specifications, and integrating Flask or Django for Integration of WhatsApp. Simultaneously, we aim to refine the user interface of WhatsApp, creating a smoother and more efficient user experience. Excited to contribute to the success of this project!

anjalichaturvedi commented 2 months ago

I am Anjali Chaturvedi, an Outreachy 2024 applicant. Really excited to be contributing here!

Overview

WhatsApp Integration Rationale

xfy0012 commented 2 months ago

Hello everyone! My name is Fanying Xu, and I'm thrilled to join this project as a contributor. Looking forward to working with all of you!

key features and functionalities of Ushahidi relevant to the project.

Data Collection:

Ushahidi collect data from multiple channels such as email, SMS, social twitter, and direct submissions. Integrating WhatsApp would significantly enhance its ability to gather real-time information

Data Visualization and Analysis:

Ushahidi provides powerful tools for data visualization and analysis. Integrating WhatsApp would enrich the platform's data sources, contributing to more nuanced insights and analysis.

Feedback on the Suitability of Proposed Libraries or Frameworks

  1. Flask vs. Django for Backend API Development

Flask is lightweight and flexible, making it a good choice for developing a simple, custom backend for the WhatsApp integration with Ushahidi. It allows for the development of microservices with minimal overhead.

Django is more suited for larger applications due to its built-in features for development and its ORM (Object-Relational Mapping) capabilities. However, for the WhatsApp integration project, Flask's simplicity and flexibility might be more advantageous.

  1. Infobip for WhatsApp Business API

Infobip offers a comprehensive solution for interacting with the WhatsApp Business API, providing extensive documentation and SDKs for various programming languages. This could significantly streamline the integration process, offering built-in solutions for message templates, session management, and automated responses. Its compatibility with WhatsApp and ease of use make it a suitable choice for the project.

  1. Libraries for Technical Needs

Database: Libraries like SQLAlchemy (for Flask) could provide robust database management capabilities, essential for storing and retrieving data from WhatsApp interactions.

HTTP Requests: Requests library in Python offers simplicity and flexibility for making HTTP calls, which will be crucial for interacting with both Ushahidi's and WhatsApp's APIs.

Redux for State Management: Considering the project involves backend development, Redux might not be directly applicable unless there's a significant front-end component involved in managing the WhatsApp data within Ushahidi's platform.

  1. Cypress for Testing

Cypress is a good choice for end-to-end testing, particularly if there are web interfaces involved in managing the WhatsApp integration. It can simulate real user actions, ensuring the reliability and functionality of the integration components.

xadina02 commented 2 months ago

HELLO, I'M MOSONGO ADINA CONTRIBUTING FROM CAMEROON

ABOUT USHAHIDI

Ushahidi, a non-profit Kenyan company reshaping information dissemination in the world, birthed from the prevalence of crisis, among other reasons, seeks to give voices to people experiencing critical situations around the world, thereby acting as a medium for ensuring crisis transparency, providing crucial data for effective response, and seeking, and generating support - All in contribution to human rights activist movements and initiatives. From my research and inquiry into the Ushahidi documentation and out of the box research, I got to understand how, in order to fulfil and foster her purpose, it would be crucial for Ushahidi to integrate whatsapp messaging into her system, ensuring a wider and sustainable source for collecting data which is used to change the lives of millions around the world.

LIBRARIES AND FRAMEWORKS

In my review, it was confirmed that Flask and Django are suitable frameworks for the development of the backend as it concerns the integration of whatsApp to Ushahidi's platform. However, for maximum maintainability, stability and leveraging power, I would highly recommend leveraging the existing backend framework Laravel to implement the whatsapp integration. It has a thriving ecosystem of third-party libraries, plugins, and extensions that extend the framework's capabilities. Developers can easily leverage these functionalities to add the additional functionality of integrating the whatsapp API, and optimize performance without starting from scratch.

UX

The platform's client view otpimally allows for the addition of new data sources of which would include whatsapp messages. This functionality would be abstracted, coupled with the modular design of additional components for performing CRUD operations on channels and managing messages and their content. All these made possible through libraries such as Infobip for effective interaction with the integrated whatsapp API.

WHATSAPP CLOUD API

The whatsapp CLoud API is more scalable when it comes to handling large volunes of messages, has a more simplified integration, more cost-effective and has enhanced features.

RashJrEdmund commented 2 months ago

Hi everyone I'm Lahfen Orashus, Rash for short. An Outreachy applicant from Cameroon.

Quick and short sumarry

Ushahidi platform

Ushahidi is a non-profit technology company working to change the way information flows in the world, Founded in Nairobi, Kenya. It is an open-source software application that utilizes user-generated reports to collate and map data. It uses the concept of crowdsourcing (Which involves a large group of individuals contributing and or sharing ideas)

key features and functionalities of Ushahid

Proposed libraries or frameworks

Zortura commented 2 months ago

Hi, I'm Zortura from Nigeria and this is my submission.

Ushahidi is a tool for collecting, managing, and visualizing data - aiming to change the way information flows in the world, by crowdsourcing information and reports from anyone and anywhere. Ushahidi accepts posts from contributors - which populate the surveys on the platform. There are different types of posts - a report, update, or revision. Data can be collected from anyone, anytime, anywhere by SMS, email, web reports, mobile applications, and twitter.

The aim of this project is to enable real-time citizen reporting through WhatsApp. This means accept submissions from users via Whatsapp, and adding WhatsApp as a data source (data provider) within the platform. This would allow WhatsApp messages to appear as a category in their own right (instead of as an SMS source from using Twilio as a WhatsApp gateway service).

Provide feedback on the suitability of proposed libraries or frameworks based on your initial review. For building the Ushahidi integration backend API, my recommendation would depend on the approach being taken. Ideally, this would be built as part of the existing Platform Backend API. The Backend API for Ushahidi is built using Laravel, which would mean creating this integration in PHP. This is especially with consideration given to the work previously done to support WhatsApp messages, which is evident in the code. This would more likely result in simplicity and consistency in the codebase, and fewer systems/codebases to maintain (in development and deployed instances).

If the Ushahidi WhatsApp integration is intended to be a separate microservice built for collecting answers from WhatsApp and posting them on an Ushahidi deployment, then a Python implementation would work. Considering that this microservice would mainly be making and receiving HTTP requests (and possibly interacting with a MYSQL/PostgreSQL database), and is not intended to be an extensive standalone application, then Flask, with a few standard libraries (requests, flask-mysqldb, BeautifulSoup) should be sufficient. Flask, being a micro-framework, is more lightweight and suitable for projects such as this, providing flexibility and control, over the more structured and opinionated Django. This should lend itself to optimal performance and Flask would also have a less steep learning curve for current and future contributors. Especially considering the the USSD microservice was built in Flask.

Alternatively, this might be implemented in nodejs. Considering that the mzima client is implemented using Javascript, this would allow keeping the codebase to the two languages - PHP/JS on the backend, and JS on the frontend.

The WhatsApp Business Platform gives the ability to connect with customers (contributors in this case). The platform consists of three primary APIs:

To send and receive messages to and from WhatsApp users, requires using either the Cloud API or the On-Premises API. The recommended solution is the Cloud API, due to its ease of implementation and low maintenance. Regardless of which API you end up using, you must also use the Business Management API, which is used to manage WhatsApp Business Account and message templates.

Infobip can certainly be used to work for the Ushahidi use case. Considering the use cases of Ushahidi and the direction of data flow, the most suitable Infobip conversation category would be the Service category, as messages would be initiated by contributors. Furthermore, the first 1,000 service (user-initiated) conversations per registered WhatsApp Business Account are free. There is also the ability to send WhatsApp surveys (although the three business-initiated conversation categories all require customer opt-in). Infobip provides both PHP and Python SDKs stick with using the Infobip PHP SDK. Infobip API Python SDK - one reason to use the python would be that it appears to have more recent changes and is more actively updated, with more GitHub stars and forks.

However, Infobip is a WhatsApp third-party Solution Partner. The Infobip SDKs are intended to be used with an Infobip account, and it is not clear (but unlikely) if they can be used to communicate directly with the WhatsApp business APIs. This means the packages would be interacting with a Infobip hosted WhatsApp API instead of the one hosted by Meta. This is a further layer of abstraction and dependency on another organization that deployment organizations may not appreciate.

Jlp06 commented 2 months ago

Hello, I'm Labanti from India. This is the summary based on my understanding regarding the Ushahidi platform. Ushahidi Platform: Ushahidi is a platform that allows people worldwide to share information during disasters or emergencies. It began in 2008 to monitor violence in Kenya and now serves globally for crisis response and human rights reporting. It a Tool for Crisis Reporting and Relief reporting during disasters globally. Ushahidi allows citizens to collect data, respond to issues, and share stories. It revolutionizes crisis response by connecting people in need with resources. Key Features and Functionalities of Ushahidi:-

  1. Crowdsourcing: Ushahidi allows people to submit reports through channels like SMS, email and social media.
  2. Mapping: Ushahidi pins submitted reports onto a map, providing real-time visual representation of events which helps in understanding geographical spread of incidents.
  3. Data Analysis: Ushahidi provides tools to analyze collected data and get insights from the reports.

Now, Ushahidi wants to integrate its platform with WhatsApp API to expand citizen reporting.

Review of Libraries and Frameworks:

JuanitaCathy commented 2 months ago

Hello, I'm Juanita Cathy. Here's my understanding on the features and functionalities relevant to the project.

Ushahidi

Ushahidi for collecting, managing, and visualizing data. It is a non-profit technology company that is dedicated to transforming information flow globally, particularly in crisis areas and international development. The platform offers features such as bulk actions and precise location identification through maps which is why it is good for data collection and management.

Whatsapp Integration

Since WhatsApp as a communication medium is easily available and easy to use, integrating it into the Ushahidi platform seems to be a useful and essential feature for enhancing real-time citizen reporting. By integrating Whatsapp, we can make Ushahidi more reachable by the local communities. The WhatsApp Cloud API presents a seamless solution for sending and receiving messages.

Technical Specifications: Backend

In terms of technical specifications, Ushahidi's backend API is built on PHP using Laravel, while the web client utilizes Angular and the mobile client is developed with Ionic. Django can be preferred over Flask for its features and scalability. The integration of Django with PHP ensures consistency. Plus Django also includes authentication, admin interface and ORM.

Whatsapp Business Integration - Infobip

Infobip's WhatsApp Business integration is highly compatible and reliable, making it a strong candidate for our project. We can make use of its documentation, reach and reliability. By utilizing Ushahidi's existing capabilities, integrating the recommended libraries, and utilizing the WhatsApp Cloud API, we can empower communities to report critical information in real-time, ultimately making a positive impact in our society.

DB and User Experience

To optimize user experience, the interface should prioritize simplicity and intuitiveness. Implementing features such as drag-and-drop functionality for managing WhatsApp channels, along with clear navigation and informative tooltips. Modular design allows for component rearrangement, enhancing scalability. Dedicated sections for viewing incoming messages and moderating content improve usability and efficiency.

For database, Django efficiently handles database interactions, while Flask can utilize SQLAlchemy for database management. Both frameworks offer robust solutions for managing data storage and retrieval.

Testing and Authentication

Cypress testing framework ensures the reliability of components handling WhatsApp Business API interactions. Comprehensive test cases cover unit and end-to-end testing, ensuring robust functionality and performance. Along with this, incorporating automated testing tools like Selenium can further enhance the reliability and stability of WhatsApp Business API interactions.

Regarding authentication, alongside OAuth2 for user identity verification, implementing multi-factor authentication (MFA) adds an extra layer of security. MFA methods such as SMS-based verification or authenticator apps strengthen user authentication, mitigating the risk of unauthorized access and enhancing overall platform security.

State Management

For React frontend, Redux library manages application state efficiently. Additionally, state management libraries such as Recoil or MobX for React-based frontend development can offer more tailored solutions. For Angular applications, leveraging the capabilities of Akita or Redux-Observable alongside RxJS can provide a more comprehensive solution for reactive programming and state management.

The Whatsapp integration has the potential to make a significant and positive impact in our society, enhancing transparency, accountability, and communication in crisis situations and international development efforts.

prakmaurya commented 2 months ago

My understanding of Ushahidi and this project


Hello, I am Prakriti Maurya. I am excited to be apart of this community and contribute to this creative and impactful project. My summarization of all the documentation and understanding of this project:-

Karisnonye commented 2 months ago

USHAHIDI Ushahidi is an open-source tool for human rights activism, crisis response, and transparency. All across the world, people are in the need of a platform where they can share their opinions on critical issues and get support where necessary. Ushahidi provides an avenue for their voices to be heard and creating technology that changes how information flows. Ushahidi tool is targeted but not restricted to Crisis Responders, Human Rights Reporters, Citizens and Government.

Technical Aspect of Ushahidi The Ushahidi Mzima platfrom API uses the Laravel framework. It however allows you work on just the UI, as it is isolated from the backend API.

WHATSAPP BUSINESS API The WhatsApp Business API is designed for businesses to automate, sort, and quickly respond to messages at scale. It enables direct communication with customers through WhatsApp, allowing for automated messages, quick replies, and the integration with business systems for personalized customer interactions. While it offers advanced features for customer engagement and support, its use involves costs based on message volume and requires technical setup and compliance to WhatsApp's policies. The API is ideal for businesses seeking to enhance customer communication on a widely used platform, with security and efficiency in mind.

INFOBIP Infobiq is a popular WhatsApp Business Solution Provider that makes it really easy to use WhatsApp as a business communication tool by utilizing its advanced features. As a third-party service provider, it offers the infrastructure, tools, and realtime technical and non-techincal support that would ordinarily be difficult for businesses to get if a direct integration to WhatsApp Business Platform is to be made. Additionally, Infobiq also helps to ensure easy compliance with WhatsApp’s policies, which, again can be somewhat difficult to achieve if one uses the WhatsApp Business Platform directly. Below are some powerful features Infobiq provides as a WhatsApp Business Solution provider: EASY INTEGRATION: With Infobiq, you can easily integrate WhatsApp Business Platform into your existing system via the API or through its omnichannel cloud solutions. QUICK BUSINESS ACCOUNT VERIFICATION: Infobiq helps give authenticity to your brand by providing you a verified WhatsApp Business Account. This comes with a green check mark next to your brand name which helps your customers distinguish your account from impersonators. MOMENTS: This is one of Infobiq’s omnichannel cloud solutions that personlize messages to your customers and send them in bulk. CHATBOT OR LIVE AGENET SUPPORT: This makes it really easy for customers to access self-service messaging flows from your business to get their questions answered quickly, or interact with a live agent over WhatsApp for instant support. PRODUCT CATALOGS: This makes shopping and exploring your products simpler by offering product catalogs on WhatsApp. It enhances your customers’ shopping journeys by allowing customers to browse your products without having to switch apps or devices. PAYMENTS ON WHATSAPP: For businesses in India and Brazil, your customers can use their preferred payment method to complete a purchase and quickly track orders in one place with the help of the seamless in-thread payments on WhatsApp. EASY FLOWS CREATION: You can create customized, app-like customer experiences that allow customers to complete tasks or purchases without leaving WhatsApp, using components like radio buttons, text fields, checkboxes and drop-down menus. QUICK REPLY BUTTONS: This allows customers an instant and easy way to reply to your messages without typing out lengthy replies. I can conclude that, Infobiq has a lot for Businesses that desire growth.

Cecil-o commented 2 months ago

PRE-TASK 1: Cecilia Oche from Nigeria

it is said that "information is key" because it shapes ones thought and give us a better understanding of things. Ushahidi has proven the statement to be true based on their work to inform the world. As a non-profit organization, the platform work to changed how information is been passed across the world and give opportunity to people who are hardly heard to speak up using Ushahidi platform. The company has been successful since it inception. the platform has been used to successfully inform about abuse of rights by activist, crisis response etc. in more than 159 countries in 45 local languages. Ushahidi is using technology to change the world for good.

Ushahidi app is build with JavaScript, Html, and CSS language, framework like Angular and NodeJs are used, Leaflet is use for mapping. All used to build the frontend. while the backend is built using Linux, Apache/Nginx, MySQL, and PHP language.

For better user experience, there are consistence improvement to give user the latest evolving technology. Ushahidi WhatsApp integration project would access more people added to the number of people that have benefitted from the platform and people can get real time information as WhatsApp is used regularly on a daily bases. Looking forward to this project and existed to impact lives through this project. Django is a better framework for this project as it help to secure data and manage content.

azigabriel65 commented 2 months ago

I am Azi Gabriel from Nigeria. This is my summary of this project

Ushahidi is a platform designed to facilitate information sharing during disasters, emergencies, and human rights violations. Its key features and functionalities include:

  1. Crowdsourcing: Allows users to submit reports via various channels such as SMS, email, and social media.
  2. Mapping: Displays submitted reports on a map in real-time, aiding in understanding the geographical spread of incidents.
  3. Data Analysis: Provides tools for analyzing collected data to derive insights from reports.
  4. Integration with WhatsApp API: Aiming to expand citizen reporting by integrating with WhatsApp for broader accessibility.

Regarding the proposed libraries and frameworks:

  1. Django: Considered suitable due to its built-in tools for rapid development and robust features, particularly for backend development. Its ORM simplifies database interaction, which is crucial for managing large volumes of data.
  2. Flask: Offers flexibility and a lightweight approach, suitable for smaller projects or those requiring frequent changes. However, Django seems more appropriate for Ushahidi's scale and requirements.
  3. Infobip: Recommended for integrating with WhatsApp Business API, providing reliable communication tools.
  4. Python's 'requests' library and 'json': Appropriate for handling HTTP requests and parsing content, which are essential for integrating with external APIs like WhatsApp.
  5. Cypress: Suggested for effectively testing Ushahidi components, ensuring the reliability and functionality of the platform.

Overall, the proposed libraries and frameworks align well with Ushahidi's goals and requirements, with Django standing out as a strong choice for backend development given its features and suitability for the project's scale.

Moliki-Salman commented 2 months ago

Hello, I am Damilola Moliki-Salman from Nigeria.

Ushahidi

Ushahidi is a platform that helps various communities make a difference by difference by making it simple to obtain, compile, and comprehend information from a large number of sources. It’s a platform that helps communities quickly collect reports and map them. This helps everyone, from regular folks to governments, see what's happening and take action to solve problems. It’s a platform that is very beneficial specially for communities with crisis potentials.

Libraries and frameworks

Although both Flask and Django excel in API backend development, each with its own standout features, However, I am proposing Node.js as a suitable framework for building a backend API to integrate with the WhatsApp Business API. Node.js is well-suited for building real-time applications and APIs due to its event-driven, non-blocking I/O model, which aligns well with the requirements of handling asynchronous operations like sending and receiving messages in real-time.

Database

After exploring the features of Ushahidi, I understand that the platform do a lot of data processing. Thus, Ushahidi might consider MySQL database because MySQL is suitable for a WhatsApp API project as it provides a structured and reliable way to store and manage essential data such as user information, message logs, and authentication details. With MySQL's relational database model and ACID compliance, developers can ensure data integrity and consistency, which are crucial for handling sensitive information and performing critical operations. Additionally, MySQL's scalability and strong community support make it suitable for managing moderate to large datasets and accommodating growing user loads. Integrating MySQL with the WhatsApp API through Node.js libraries enable efficient database operations within the backend infrastructure, facilitating smooth communication and interaction with the WhatsApp Business API endpoints. Overall, MySQL plays a vital role in ensuring the robustness, reliability, and scalability of a WhatsApp API implementation.

HTTP request libraries

Axios is a promise-based HTTP client for the browser and Node.js. It allows you to make HTTP requests to the WhatsApp Business API endpoints easily.

praptijaduvanshi commented 2 months ago

Hello, my name is Prapti and this is my overview.

Understanding Ushahidi

Ushahidi is a non-profit organization that empowers citizens by collecting and visualizing data from various sources like SMS, email, and social media. It promotes transparency and information flow, fostering positive change in society. Ushahidi is currently transitioning from version 3 to Mzima, a new platform built on Laravel (PHP).

Integrating WhatsApp for Real-Time Reporting

This project aims to integrate WhatsApp as a data source within Ushahidi. This will enable users to submit reports directly through a familiar and convenient platform, significantly increasing citizen engagement. Imagine:

Technical Considerations

Integrating the WhatsApp API within the existing Ushahidi backend (PHP) offers consistency and simplifies maintenance. However, if the integration is designed as a separate service, Django and Flask are popular Python web frameworks that provide tools and libraries for building web applications quickly and efficiently. Django could be a good choice for its scalability.

Ushahidi Version 5 API (RESTful):

This API acts as the bridge between Ushahidi's platform and external applications like our proposed WhatsApp integration. It uses the REST (Representational State Transfer) architectural style, allowing for a standardized approach to data access and manipulation. The v5 API offers:

WhatsApp Business Cloud API:

This API, directly hosted by Meta (formerly Facebook), is the official gateway for sending and receiving messages through WhatsApp Business Accounts. It provides a secure and reliable way to interact with citizens through WhatsApp within Ushahidi. Here are some key aspects of the Cloud API:

Infobip WhatsApp Business API Libraries:

WhatsApp Business Solution Provider (BSP) is an intermediary and provides tools and services for integrating with the WhatsApp Business API. Some popular BSPs include Twilio, MessageBird, and Infobip. While the Cloud API provides the core functionality, Infobip simplifies development. Infobip offers libraries (software development kits) specifically designed to interact with the WhatsApp Business Cloud API. These libraries offer several advantages:

Additional APIs for Backend Functionality:

Besides the core APIs mentioned above, several other APIs will likely be used to build the complete Ushahidi WhatsApp integration:

Security

User Experience

A user-friendly experience encourages citizen engagement and simplifies reporting:

Jipheens commented 2 months ago

Hey everyone,

I've had the chance to dive deep into the documentation provided, and I must say, I'm thoroughly impressed by the comprehensive approach outlined for integrating WhatsApp into the Ushahidi platform. The potential impact of this integration on global information dissemination, especially in crisis situations and international development efforts, is truly commendable.

The decision to leverage PHP with Laravel for backend development, along with considerations for frameworks like Flask/Django, reflects a strategic approach aimed at ensuring project success. It's great to see a pragmatic approach towards incorporating the WhatsApp API seamlessly into the existing PHP backend, thereby maintaining consistency and avoiding the complexities of managing multiple backend projects.

I'm particularly intrigued by the emphasis on utilizing Infobip libraries for WhatsApp integration, as well as the careful selection of frameworks for database interaction, HTTP requests, and testing methodologies like Cypress. These choices demonstrate a well-thought-out strategy focused on achieving the project's objectives effectively.

The attention to detail regarding UI/UX design, authorization mechanisms, and the exploration of additional libraries for enhancing functionality further reinforces the commitment to delivering a user-friendly and secure integration.

Overall, the insights gleaned from the documentation provide a clear roadmap for the integration process, and I'm excited about the potential positive impact this initiative could have on communities worldwide. I'm eager to contribute to the success of this project and play a part in advancing its mission.

Cheers, Jipheens Wahome

princyym commented 1 month ago

My name's Princy Mangla and I'm from India. I've gone through the technical documentation of Ushahidi, WhatsApp Business API, and everything relevant to the project. Here's my overview.

WHO IS USHAHIDI?

Ushahidi is a non-profit that develops open-source software for crowdsourcing, monitoring, and visualizing real-time data. It was founded in Kenya in 2008 to map incidents in communities. Users create digital maps to display information. It has been used in crisis response, human rights, election and environmental monitoring, and civic engagement. Ushahidi is transitioning to Mzima, a new platform built on Laravel (PHP).

Integration of WhatsApp API for Real-time Reporting

After going through the documentation, I discovered that integrating the WhatsApp API into the software can enable users to submit reports and receive updates in real-time using the widely-used WhatsApp platform. This integration ensures that a larger audience can access the reporting system, supporting various media types such as text, images, videos, and documents, allowing for detailed and comprehensive reporting. Additionally, users can share their location, which enhances the accuracy of reported incidents. Automation features streamline the reporting process, while integration capabilities enable seamless data integration into existing systems for further analysis and decision-making. Overall, leveraging the WhatsApp API for real-time reporting enhances communication, efficiency, and data quality, facilitating more effective response and management of incidents or events. Ushahidi provides comprehensive technical documentation and support resources to assist users in integrating WhatsApp data sources and leveraging platform features effectively. This includes user manuals, API documentation, and community forums for assistance and collaboration.

Ushahidi Version 5 introduces a RESTful API, offering developers a standardized way to interact with the platform programmatically. This API enables seamless integration of Ushahidi's functionality into external applications, allowing users to access, manipulate, and manage data stored within the platform. Using standard HTTP methods, developers can perform operations on resources such as incidents, categories, and users. The API supports authentication and authorization mechanisms for secure access. Overall, the RESTful API empowers developers to build innovative applications and workflows that leverage Ushahidi's capabilities.

UX/UI

A modular design for WhatsApp channels would involve creating a customizable interface that allows users to add, remove, and configure WhatsApp channels. This design would include modules for viewing incoming messages, managing channel settings, and moderating content. The UX for this design would involve creating a user-friendly interface that allows users to easily manage their WhatsApp channels. This could include features such as a drag-and-drop interface for adding and removing channels, a messaging module for viewing and responding to incoming messages, and moderation tools for managing content.

Regarding the suitability of proposed libraries or frameworks:

  1. Flask and Django are robust web frameworks suitable for building the Ushahidi integration backend API. Flask is lightweight and well-suited for smaller projects, while Django offers more built-in features and scalability for larger applications. and both can provide the required results.
  2. Infobip Libraries provides libraries for interacting with the WhatsApp Business API, which can streamline integration with Ushahidi's messaging functionalities. These libraries offer convenience and reliability for managing WhatsApp channels and exchanging messages.
  3. Redux is a popular library for managing application state, especially useful for handling complex data updates from WhatsApp messages within the Ushahidi platform. It provides a predictable state container that simplifies state management and ensures data consistency.
  4. Cypress Testing Framework is reliable for components within the Ushahidi platform. Its comprehensive testing capabilities, including end-to-end testing and integration with CI/CD pipelines, which can ensure the robustness and reliability of the integration.

@dukedanny @CeciliaHinga @Angamanga

pretask-1

Familiarize yourself with Ushahidi's technical documentation, the WhatsApp Business API, and any relevant libraries or frameworks planned for the project.