# Technical Specifications

***

**Better development stack**

Ushahidi mzima platform ***Backend API*** is built on PHP stack: as with v3 platform, we’ve isolated the core logic of the platform standalone Entity and Usecase classes. 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.

***

**What’s new (and improved)?**

Largely similar to v3:

* 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**

* It’s more structured making it easier to find what you want - architectural changes still ongoing
* It doesn’t repeat itself so a change can be made in one place, not need to be copied everywhere else - architectural changes still ongoing
* UI is isolated to the backend API, allowing work on just the UI without having to delve into the API code

***

**The stack**

* Back-end: [Linux](http://en.wikipedia.org/wiki/Linux), [PHP](https://php.net/), [Apache](http://httpd.apache.org/)/[Nginx](http://wiki.nginx.org/Main), [MySQL](http://www.mysql.com/) or PostgreSQL
* Front-end: [Angular](https://angular.io), [Javascript](http://en.wikipedia.org/wiki/JavaScript), [Html](http://en.wikipedia.org/wiki/HTML), [CSS](http://en.wikipedia.org/wiki/Cascading_Style_Sheets). Built with [NodeJS](http://nodejs.org/). Using [Leaflet](http://leafletjs.com/) for mapping, and a collection of other frontend libraries
