Software Development & Business Approach by Airkod

In the previous post, we gave examples of third-party service integrations with our clients' projects. Here we will give an example of developing our services.

The main focus of our company is software development. To simplify the perception of information, we will divide this definition into components.


Development on the outside visible to users of the site or application is the Front End. When you click on the link, you go to the site page and see the navigation menu, product catalog, shopping cart, etc.


In order for the page to be clickable and adaptive for different sizes of displays (from a monitor and laptop to a mobile phone and smart watch), you need to do a job called "layout". This work requires a specialist with deep knowledge of HTML / CSS, Javascript and Angular, React.js with a minimum of 2 years of experience in the profile.



In order for the project to be functional, to be able to perform calculations online, to make an order using a basket, to provide the ability to perform transactions on monetary settlements, to store user data, to ensure the security of this data, to synchronize the work of tens and tens of thousands of people at the same time and to have a high level performance - it is necessary to develop a complex and scalable architecture called the Back End of the project.


To work on the Back End part, it is necessary to organize a complex database with which project users will interact in the future. To do this, you need to have in-depth knowledge of MySQL, PostgreSQL, Oracle, Mongo, Redis databases with at least 2 years of experience.



To organize a common architecture, code written in one of the programming languages ​​is used. Airkod uses PHP, C ++ and Java, Zend Framework, Laravel, Node.js, which works consistently and smoothly with traffic from hundreds of thousands to several million monthly users for Medium Business, Large Business and Enterprise customers.

To create and support architectures of this level, a general experience in the field of an average of 8 years is required.


Several examples of organizing services within complex projects.


Synchronization and precise distribution of tasks for a staff of couriers of 200+ people at the same time for online food delivery service.

We faced several technical challenges for the successful implementation of the system.


Development of a mobile application for accepting and processing orders:

- creating an application for Android phones using the iOnic language, which is used to develop applications. This application was installed on the mobile phones of the company's couriers. From the courier's point of view, this is the interface that stores the history of previous orders and accepts new orders.

Integration of the courier application with the 1C accounting system. 


First of all, all orders coming from the site and the client application go to 1C. 1C assigns each order the “new order” status and adds it to the pool to the rest of the company's orders. In parallel, 1C sends to all couriers with the “ready to accept order” status an application for the delivery of a pool of new orders to the specified area.

A free courier indicates readiness in the application and goes to the point of issue of the order.




Courier's current location, time tracking.


 We are all used to seeing the current location of a taxi or courier on an online map, to receive accurate information on the remaining delivery time.

1. The current location of the courier. The GPS signal transmits data on the current coordinates of the courier through the WHOIS server. We transfer the received data to the user's site in the form of a geolocation mark on the map. If the courier does not have the ability to receive GPS, then we use the information from the base stations of the mobile communication to approximate the location using triangulation.


2. Time tracking. Estimation and analysis of the remaining delivery time is carried out by analyzing the average speed over the last n-minutes (we adjust the length of the intervals ourselves, having made changes in the code written by us in advance). If the average speed for n-minutes is 30 km / h, then the application estimates the length of the remaining route, for example, 10 km, and estimates the remaining time using the formula 10 km / 30 km / h = 0.33 h or about 20 minutes. We send the received data to the user on the site or application. In some cases, we can add additional variables to the analysis of the remaining time: traffic jams, the average speed of individual sections of the city or an entire street, the effect of weather conditions.

4. Stable and uninterrupted operation of a highly loaded service. 


On the server side, a backup (data backup) has been configured in case the system stops working for any reason. In this case, backup will automatically resume its work on the current server or use the backup server and use the latest up-to-date copy of the entire project, which is created once every 24 hours.

To protect against possible software attacks of the project (ddos, etc.), we recommend using the Cloudflare service, which has received worldwide recognition as one of the most secure systems.


TECHNOLOGIES WE USE FOR SOFTWARE DEVELOPMENT PROCESS

PHP

PHP is a popular general-purpose scripting language that is especially suited to web development. Fa

Javascript

JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with fi

Laravel

Laravel is a web application framework with expressive, elegant syntax.

Node.js

Node.js is a platform for building fast and scalable network applications. Node.js uses an event-dri

Angular

Angular is a platform for building mobile and desktop web applications

HTML5

Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displa

ReactJS

React is a library for building composable user interfaces, it supports and encourages the creation

MySQL

MySQL is an Oracle-backed open source relational database management system (RDBMS) based on Structu

MongoDB

MongoDB is a cross-platform document-oriented database program. Classified as a NoSQL database progr

Redis

Redis (Remote Dictionary Server) is an in-memory data structure project implementing a distributed,