Taxi App Development

Taxi App Development

August 17, 2020

Not everybody knows what happens when a client calls a taxi service or orders a car through an app. If the service has no free cars, it transfers the order to another company it cooperates directly with or through to a taxi aggregator. How does it all work? How do the operators and drivers avoid confusion, and how do the cars arrive without (or almost without) delay?

To ensure high-quality work, aggregators need specialized software. We will outline how it works based on the example of Resident Taxi. The service consists of a server, website, CRM, driver and vehicle control unit, and iOS and Android mobile applications.

Technologies and frameworks

01 Technology linux Linux Operating system.
02 Technology apache Apache Web server.
03 Technology mysql MySQL Database.
04 Technology php PHP Programming language version 7 with modules – the server side of the site is written in PHP.
05 Technology yii Yii PHP framework version 1.1.19, used to build the server side of the website.
06 Technology php modules PHP modules php-common, php-pear, php7.1-common, php7.1-curl, php7.1-dev, php7.1-gd, php7.1-json, php7.1-mbstring, php7.1-mysql, php7.1-odbc, php7.1-opcache, php7.1-readline, php7.1-xml, php7.1-zip.
07 Technology html5 HTML A hypertext markup language used to write the web interface and page templates.
08 Technology js5 JavaScript A programming language used to create dynamically updated content on website pages.
09 Technology objective-c Objective-C The programming language in which the mobile application for iOS is written.
10 Technology java Java The programming language in which the mobile application for Android is written.
11 Technology bash Bash Command shell used to execute some commands for server maintenance.

The user's browser and the site's web interface interact through the HTTPS network protocol, which encrypts the transmitted data.

The PHP application handles client requests through a URL. When a GET request comes in, the server pulls the required information from the MySQL database, processes it if necessary, combines it with HTML templates, and returns the page to the client. When POST requests are received, the server monitors the information received from the user in the form of session data, and if no errors are encountered, it updates the information in the MySQL database.

The mobile apps send requests to the back end and receive responses in the JSON data exchange format. The Yandex.Maps API is used for address hints, and the Google Directions API is used to calculate the distance and route time.


The site connects corporate or individual customers and taxi companies, providing transportation services for all types of passengers at uniform rates.

  • An individual can obtain information about the trip and request a car;
  • Corporate clients can order a car, track its status and view their travel history.
Resident Taxi home
Resident Taxi for corporate clients
Resident Taxi checkout

An operator can create an order, view the results of the order implementation, obtain information on completed orders, receive details on all orders for a given period, view a list of sent receipts, and see the driver list.

Resident Taxi closed orders
Resident Taxi operator interface

Using the advanced form, an operator can create an order for an employee of any registered company or for an individual client.

Resident Taxi order creation by operator

Addresses are linked to phone numbers and saved to the database. When placing a new order, the operator can select an address from the list.

Resident Taxi cars on the map

When the operator has specified the ‘From’ and ‘To’ addresses, a route is constructed on the map.

Resident Taxi route building

The list of orders is divided into two tables: the lower one shows the current orders, while the upper one displays completed orders. There is also a list of messages for the operator, sorted by the time they were sent. The operator can close a read message or a group of three messages. Subsequent unread messages will take the place of the closed ones.

Resident Taxi current orders

The list of electronic checks sent contains information received from the Orange Data service.

Resident Taxi sent checks

CRM system

Resident taxi

Popular taxi aggregators work with individual drivers, whose interest boils down to receiving payment quickly. Cars do not undergo daily technical monitoring, and no one checks the driver's health. The bottom line is that for all the cost savings, the taxi becomes unsafe. Resident Taxi conducts pre-trip medical and technical examinations, allowing only properly functioning cars and reliable drivers to work.

Valery Cherenkov, founder of Resident Taxi

The owner of the Resident Taxi account makes lists of vehicles, dispatchers, doctors, mechanics and drivers through the ‘For taxi fleets’ menu. Organizations are then added and the links between the organizations and the specified database items are indicated. Vehicle and driver data can be imported from Yandex.Taximeter.

Registration in the CRM system is carried out using a mobile phone number, which receives an SMS with a password. At the first authorization, the CRM system links the user to the phone number and generates a list of roles for the user.

Resident Taxi login to CRM system

The owner of the taxi company can register independently in the CRM system, providing a full name and mobile number.

Resident Taxi registration in CRM system

After authorization, the owner sees a list of open electronic trip tickets on the account.

Resident Taxi waybills

The ‘References’ menu item allows you to add employees and vehicles. The ‘Account’ menu item allows you to add organizations, change settings, and view messages. In the list of organizations, you can:

  • view and add companies;
  • establish their links with dispatchers, medical staff, mechanics, drivers and vehicles;
  • create contracts;
  • establish links between vehicles and drivers;
  • top up the account balance;
  • view a list of payments;
  • establish individual service costs for an organization;
  • specify the parameters of external systems;
  • view fuel transactions and fines.
Resident Taxi Organization

All these operations can be carried out using the organization's card. To access the card, just click on the corresponding row in the table.

Resident Taxi organization card

A trial period of 30 days is available for new organizations. During this time, you can get acquainted with all the capabilities of the CRM system and create electronic trip tickets without depositing funds to the organization's account. After the trial period, it will be impossible to create a trip ticket with a zero account balance.

Any user can add their own objects and manage travel documentation. A user can be classified as a dispatcher, doctor, mechanic or driver in other accounts. When a user completes authorization by phone number, a check is conducted to see if any roles have been assigned in other accounts, the user is then associated with the discovered roles, and the corresponding rights are granted.


Summary reports and reports for organizations can be generated covering the following:

  • Payments;
  • Fines;
  • Repair works for vehicles and providers;
  • Knowledge of traffic laws.
Resident Taxi reports CRM system

Trip tickets

Management of travel documents in electronic form. The dispatcher creates a trip ticket for a driver, and selects a car from the list of vehicles associated with the driver or other vehicles belonging to the organization.

A medical worker examines the driver at the beginning of the working day, records the results and certifies them with an electronic digital signature. If the driver is not allowed to work, the trip ticket is cancelled.

The mechanic is in a similar position: they check the vehicle, register the results and certify the vehicle with an electronic digital signature. If the vehicle is faulty, the trip ticket is cancelled and a fault record is automatically created.

After successful pre-trip inspections, the driver registers the departure from the garage or the depot. The system checks the driver's knowledge of the Highway Code at the organization's request. The driver answers one mandatory question, chosen at random from a list of questions that haven't yet been answered.

Resident Taxi traffic rules

At the end of the working day, the driver registers their arrival at the garage. The mechanic carries out a post-shift inspection of the vehicle. The medical worker examines the driver. The dispatcher marks the trip ticket as completed.

Different user roles for different trip tickets are reflected in the ‘Available roles’ column.

Resident Taxi closed waybills

To recap, the electronic trip ticket is created by the dispatcher, the doctor examines the driver at the beginning and end of the working day, the mechanic conducts the pre-trip and post-trip inspections of the car, and the driver marks the time of departure and return to the garage. There is support for several modes of working with trip tickets.

01 Man and check mark Standard mode Each stage is registered by the user with the corresponding role. One user can combine several roles.
02 One key and hand Permanent partial delegation of roles to the driver Any driver can be assigned other roles. The driver performs the tasks independently, while the remaining roles must be performed by users who are assigned them.
03 Hand and keys Permanent full delegation of roles to the driver Any driver can be assigned all roles: dispatcher, doctor and mechanic.
04 Сlock 12-20 Temporary full delegation of roles to the driver When creating a trip ticket, the dispatcher can enable delegation and indicate an end date. The pre-trip inspection of the first trip ticket and the post-trip inspection of the last trip ticket must be carried out by users with the appropriate assignments, while the driver performs the other tasks independently.
05 Dispatcher Full delegation of roles to dispatchers Any dispatcher can be assigned the roles of doctor, mechanic and driver, and then carries out those tasks independently.
Resident Taxi adding a waybill

In full delegation modes, all roles are automatically flagged:

  • for pre-trip inspections when creating the trip ticket;
  • for post-trip inspections when registering the driver's return to the garage.

The time taken to complete the various stages is generated with random intervals of up to 10 minutes between stages. In delegated modes, at least one user must be selected for each role. To select a user, you must make sure the ‘Delegate Role’ box is checked.

Resident Taxi Mechanics

The account owner or user with the appropriate role can generate the following logs:

Resident Taxi open waybills


A vehicle's malfunctioning can be indicated in the trip ticket during the technical inspection or manually at any time.

Resident Taxi Malfunction

For each malfunction, subsequent data must be entered regarding the repair work carried out and any spare parts that are installed or replaced.

Resident Taxi repair list

If all repair work is completed, and the ‘Technical condition after repair’ field is set to ‘Working’, the car is returned to the list of working vehicles and trip tickets can once again be created. Until the repair is completed, it is impossible to create trip tickets for the vehicle.


When the trip ticket is created, an act of vehicle acceptance is drawn up in the driver's office. The act works like a car-sharing mobile application – it records the defects of the car before work is started.

The mechanic conducts an inspection, and the driver, in their own words, fills out the act on their smartphone. The mechanic certifies the act in their personal account. During the inspection of the car, its appearance and technical condition are evaluated, and the vehicle is photographed. If the mechanic doesn't find any defects, the act is completed. If the mechanic finds a defect, the car is immediately sent for repairs. For each defect, the mechanic creates a repair request at their own or a third-party repair shop.

In line with the request, the repair shop operator draws up a work order, indicates the specialization of mechanic, selects a specialist from the list, and completes a list of required spare parts and materials as well as tasks to be carried out. The mechanic sees the list of assigned jobs and clicks the ‘Start work’ button for the given order. During the repair works, the mechanic can modify the spare parts, materials and tasks. When the repair work is complete, the mechanic clicks the ‘Finish’ button. After that, the operator can complete the work order.

If all orders are completed, the mechanic marks the vehicle repair request as closed. After all requests are closed, the vehicle malfunction notification is removed. Finally, after removing all notifications about the malfunction, the inspection report is closed.

Online cash register

The service rents the cash register from Orange Data. The cash register built into the CRM is available in the driver interface and complies with all current amendments to the Federal Law.

After opening the trip ticket, the driver generates an electronic receipt for the order. To do this, the customer's phone number and the price of the trip are entered. If the client refuses to provide a number, the driver indicates their own number.

The dispatcher can also generate an electronic receipt if they have access to the driver's trip ticket.

The data is sent to the fiscal authority (fiscal data operator), and the driver or dispatcher receives a QR code that can be read using a mobile phone and checked in a special application.


Operators are permitted to track cars and control them remotely, including blocking the central lock when the trip ticket is completed, and informing the driver that they need to take a break. If a driver renting a taxi has a negative balance, they won't be able to start the car. Or, if a driver violates the speed limit or working hour directive, a negative report will be generated about them.

Module structure:

  • receiving data from GPS trackers;
  • API for obtaining information by tracker number or vehicle ID;
  • CRM integration with a third-party GPS;
  • vehicle control through the tracker protocol.


Riders can order a car on the website or through the Resident Taxi mobile application. The address can be entered manually, or the location can be identified on the map using mobile geolocation. All orders are saved to the mobile application and can be repeated.

An exclamation mark in the circle

There is a discount of 200 rubles for the first order made through the mobile application.

There are several classes of cars: standard, comfort and business. Booster seats for children can be specified. There are further possible specifications, including ‘station wagon’ and ‘animal transportation’.

Car arrival times are from 7 minutes. The client can make a reservation so that the car arrives at a specific time.

Completed work

Since September 2017, EDISON's developers have turned a simple dispatcher software solution into an aggregator service.

01 Dispatcher User account for operator and administrator.
02 Order address An order form, which has autocompletion functionality for addresses. An address can be selected from the list of saved phone numbers linked to the customer's account.
03 Route Constructing a route on the map.
04 Sending orders to a taximeter Sending orders created on the website to Yandex.Taximeter.
05 Сhecklist pad with two finished items Receiving information about the fulfillment of orders by drivers from Yandex.Taximeter.
06 Mobile qwerty Adding orders created in the mobile application to the website database.
07 Three men and check mark Parsing information about drivers' statuses from the Yandex.Taximeter ‘Shift’ page.
08 Dollar and checklist Receiving and processing information about transactions on fuel and washing cards from the 4TRUCK service.
09 Exclamation mark Receiving and processing information about traffic violations.
10 Crain and bricks Receiving and processing information about integration with the Ritm, RBTaxi, Nowtaxi, Maxim and MultiPassMe.
11 Development and system unit API for exchanging orders with the website.
12 Gears and screwdriver Rework of the API protocol for receiving Gett and Citymobil orders.
13 Ticket Connection of the Orange Data online cash register for sending electronic receipts for orders.
14 Function Code refactoring and project migration from PHP 5.3 to PHP 7.1.
15 Cloud CRM CRM for vehicle fleet and personnel management, preparation of travel documents and their cloud versions.
16 Document with list Drivers' electronic trip tickets.
17 Document with copyright Еlectronic digital signature of documents made by the individuals responsible.
18 Book with question Traffic law knowledge tests.
19 Bank card and gear Blocking and unblocking of fuel and car wash cards when marking the electronic trip ticket as closed.
20 Dollar in hand Topping up the organization's internal account in CRM.
21 Clock and dollar Daily write-downs of the cost of services for each active vehicle belonging to a given organization.
22 Administrator application Registrations of vehicle malfunctions either manually or during daily technical inspections.
23 Development Repair work with replacement of parts in the event of a vehicle malfunction.
24 Copy of document Reports on payments, fines and results of traffic law knowledge checks.
25 Creation of an order by the operator Creation of an order by the operator.
26 From man to two men Exchange of orders between users of the cloud service using Yandex.Taximeter.