# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ushahidi.com/platform-user-manual/overview-of-ushahidi-platform-v3.0/technical-specifications.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
