Platform Contributor Guide
[Legacy v3] Platform
[Legacy v3] Platform
  • 👋[Legacy v3] Welcome | README
  • Contributing | Getting Involved
    • Specific tasks needed for COVID19-support
    • Add code to Ushahidi
    • Encouraging contribution from non-developers
  • Frequently Asked Questions
  • Join the Ushahidi community
  • Contributors ✨
  • 🛣️ The Ushahidi Platform Roadmap
    • V2-V3+ Migration tool
  • Privacy and security best practices
    • Security as a user
    • Security for deployment admins
    • Security for deployment hosts
  • Development & Code
    • Development: Overview
    • How to get the source code
    • Setup Guides
      • Installing for production environments
      • Development environment with XAMPP
      • Development environment setup with Vagrant
      • [Client] Setting up the Platform Client for development
        • Migration from AngularJS
      • Setting up the Pattern Library for development
      • [API & Client] Bundled release install
    • Add code to Ushahidi
    • Development process
    • Coding Standards
    • Track and submit issues in Github
    • Upgrading Ushahidi
      • Upgrading to latest release
      • Upgrading from V3.x.x to V4.x.x
    • ⚙️ Installation Helper‌
  • Tech Stack
    • API Documentation
    • Third party app development
      • Web hooks
    • Database | Tables overview
    • Database | Database Schema Diagram
    • Database | Table details
    • 📐Architecture
    • Use case internals
  • QA & Testing
    • The QA process
    • How to run QA tests
    • Defect Management
    • How to write QA test scripts
    • Hotfixes
  • Front-end development
    • Changing UI styles: introduction to the pattern library
      • File-structure
      • Installing new packages
      • How to Apply to the Platform
      • Using the changed styles in platform-client
      • Syntax and Formatting
      • Grid, Breakpoints, & Media Queries
      • Variables
      • Mixins
      • Helpers
      • Icons
      • Create a New Component from Scratch
      • Read Direction
  • Design
    • 🎨Design: overview
    • 'Best practice' design
    • Ushahidi Platform 'Sticker Sheet'
    • User testing process
    • User testing script examples
    • Synthesising user testing results examples
      • Synthesis example 1
      • Synthesis example 2
      • Synthesis example 3
      • Synthesis recommendations example 1
      • Synthesis recommendations example 2
    • Open Source Design
  • Documentation
    • Documentation
    • Contributing docs via GitHub
  • Translation
    • Localization and Translation
  • The Ushahidi Platform Facebook bot
    • The Facebook bot
      • Installing the bot
      • The bot script
  • Hackathon and events
    • Installathon, May 2019
      • Welcome to the hackathon!
    • Write/Speak/Code 2019
    • Open Design: Bangalore
    • Open Design: Taipei
    • 📑Google season of docs
    • 💻Google Summer of Code
      • GSoC 2024
  • Enhancement Proposals
    • Exchange Format
    • Importing data from previous versions
Powered by GitBook
On this page
  • Overview
  • What does Ushahidi Do?
  • Who is Ushahidi For?
  • Technical Specifications
  1. Development & Code

Development: Overview

Overview

What does Ushahidi Do?

  • Ushahidi is a tool for collecting, managing, and visualizing data.

  • Data can be collected from anyone, anytime, anywhere by SMS, email, web, Twitter, and RSS.

  • Posts can be managed and triaged with filters and workflows.

  • Data can be viewed in many ways: on a map, in a list, or as a visualization.

Who is Ushahidi For?

Anyone can use Ushahidi, but traditionally it has been a tool used by Crisis Responders, Human Rights Reporters, and Citizens & Governments (such as election monitoring or corruption reporters). We also serve environmental mappers, asset monitoring, citizen journalism, international development, and many others.

Technical Specifications

Development stack

TODO: Add info about v4.

  • Ushahidi 3.x was built on a PHP stack: dependencies are managed with composer, we’re using Kohana 3 but phasing that out, and we’ve isolated the core logic of the platform standalone Entity and Usecase classes.

  • The user interface of Ushahidi 3.x is now a separate app (the client) built purely in JS, HTML + CSS using AngularJS, Single SPA and a collection of other libraries, with a build pipeline using gulp and Webpack.

  • What’s new (and improved)?

    • Dependencies are properly managed and easier to update or replace needed.

    • We’re using our own API to build the app, it gets first class support.

    • You can work on just the UI without delving into the API code

    • Modern libraries mean they’re still being supported, we don’t have the burden of supporting legacy libraries ourselves.

Code is easier to customize

  • code is more structured making it easier to find what you want

  • code is doesn’t repeat itself so a change can be made in one place, not need to be copied everywhere else

  • UI is isolated to the client, allowing work on just the UI without having to delve into the API code

The stack

PreviousSecurity for deployment hostsNextHow to get the source code

Back-end: , , /, or

Front-end: , , , , . Built with , and . Using for mapping, and a collection of other frontend libraries

Linux
PHP
Apache
Nginx
MySQL
PostgreSQL
AngularJS
Single SPA
Javascript
Html
CSS
NodeJS
Gulp.js
Webpack
Leaflet