John often saw his father turn to his neighbor for some help. He wondered why the other neighbors could not help in solving problems of some other kind. It seeded the base, on which TaskRunner was built later.
TaskRunner — is an online platform for ordering services. The app users are divided into two categories — Runners (those who carry the tasks out) and Posters (those who order services). Posters create tasks with the description of what should be done and publish them on the TaskRunner platform. The Runners send requests and the Poster chooses who will perform the task and pays for it. After the Poster and the Runner confirm the task fulfillment, the Runner gets his payment. Administrative function is also presupposed for system management and control.
TaskRunner platform consists of:
- A mobile app for Posters (for both iOS and Android)
- A mobile app for Runners (also for iOS and Android)
- Admin Panel (Web)
— We used the approach when 2 different applications have business logic written in a single module. It allowed to simplify the development process as well as further support of the product.
Anton Bevza, Android Developer
The client came to Stfalcon with a ready-made solution, but the users were constantly complaining about the problems and failures of applications and the admin panel as well. After the detailed project audit, cost and risks estimation, we decided to recreate the project from scratch, using the most advanced modern technologies.
The backend was realized on ASP.NET platform and Microsoft SQL Server was used for DBMS. Due to the high requirements to the resources, the overall system productivity was low. Besides, Microsoft Products’ operating costs were high. We made up our mind to develop the new system on the Symphony framework, and to use PostgreSQL for DMBS. Additionally, we wrote several utilities for data transfer from Microsoft SQL Server to PostgreSQL.
The old applications were realized with the help of Cordova and React technologies. Since the main requirements to the new versions were high-speed operation and stability, our experts decided to develop native iOS and Android apps.
Backend realizes REST API for data exchange with the client mobile apps, it is integrated with several external services for carrying a number of operations out — payments for orders, sending emails, SMS and PUSH notifications. The operation in the Kubernetes environment increases the reliability and resilience of the product backend and the system as a whole.
Android applications follow the principles of Clean Architecture. The project is divided into 4 independent modules: Poster, Runner, Domain, Data. Domain and Data are the modules common for both apps — the Runners’ and the Posters’. Such an approach allowed us to avoid business logic duplication in both solutions, and to save time in the process of development.
IOS version architecture looks much like the Android one, consisting of 4 modules: Runner Presentation, Poster Presentation, Domain, and Data. For data binding, we used RxSwift, since MVVM architecture was applied for Presentation Layer. Besides, Swinject, a Dependency Injection library was used for new modules initiating. It simplifies their creation and re-usage.
The possibility to analyze user behavior is extremely important for the systems of such kind. We integrated analytic services AppsFlyer and Segment for the purpose.
Besides, we integrated the Intercom service into the app. It allows the users to provide feedback and to turn for immediate technical support right in the application.
All the system components were redesigned from scratch, the operational stability of the product was improved as well as its speed and convenience of the app and Admin Panel usage. What is important — all the users were preserved in the process of app redesign.
Tech Lead Mobile