Skip to Content

Building a Lightweight Ride-Hailing App in Resource-Constrained Environments

9 May 2026 by
TechStora

Understanding the Project's Core Architecture

The developer aimed to create a practical ride-hailing app tailored for users in Cuba, where most smartphones have less than 2GB of RAM and operate on intermittent 2G networks. The app was divided into two components: a passenger app and a driver app, both relying on the same customized map core. At its core, the passenger app was designed to be only 58MB, allowing users to request rides, search addresses, and track nearby drivers offline.

Key to the operation of this system was a lightweight backend built with Python Django, which handled tasks like matching passengers to drivers based on real road distances. Utilizing OSRM (Open Source Routing Machine), the backend calculated efficient routes while minimizing processing overhead. By ensuring that most functionalities worked offline, the app was able to thrive in Cuba's low-connectivity environment.

Challenges with Map Data Optimization

A significant obstacle was the size of the map data, which constituted the bulk of the app's storage requirements. Organic Maps, the base application used, was initially over 160MB, far too large for the limited-capacity Android devices commonly used in Cuba. The developer's solution was to strip down unnecessary features and optimize map files derived from OpenStreetMap data.

To achieve this, the developer removed all unnamed polygons, such as empty fields and forests without labels, as these were irrelevant for a taxi dispatch system. Additionally, by filtering out all languages except Spanish and English, the metadata section of the map files was reduced by approximately 80%. These efforts allowed the app to retain its core functionality while meeting strict size limitations.

Leveraging OpenStreetMap for Custom Map Generation

OpenStreetMap (OSM) data served as the foundation for the app's mapping functionality. The developer created a custom pipeline to download and process OSM data on a personal machine. This pipeline was designed to clean the data by removing superfluous elements, such as unnamed buildings or parking lots, and focus solely on relevant information for ride-hailing purposes.

Furthermore, a tailored search index was embedded directly into the mwm file format, eliminating the need for separate systems like Nominatim. This approach not only reduced the app's size but also ensured a faster and smoother search experience for users, even in offline mode.

Adapting Organic Maps for a New Purpose

While Organic Maps is a feature-rich navigation tool, it was not originally built for taxi dispatch. Recognizing this, the developer made significant changes to adapt it for the ride-hailing context. Unnecessary features, such as hiking trails and cycling routes, were removed to cater to the specific needs of the target audience. This step was crucial in creating a targeted user experience.

Another noteworthy modification was the removal of multithreaded rendering and cloud bookmark synchronization. These features, while beneficial for individual navigation, were deemed unnecessary for the app's primary purpose. By focusing on essential functions, the developer was able to create a highly efficient system suitable for the local environment.

Key Lessons and Future Applications

This project highlights the importance of tailoring software to the specific constraints and requirements of the intended user base. By focusing on optimizing map data and eliminating non-essential features, the developer created an app that successfully completed over 20,000 taxi rides during a fuel crisis.

The techniques employed in this project, such as using OpenStreetMap data and building lightweight backends, can serve as a model for developers working in resource-constrained environments. These methods demonstrate the potential of technology to provide solutions that are both practical and efficient, even under challenging conditions.