Skip to Content

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

30 April 2026 by
TechStora

Designing the Core Architecture for a Ride-Hailing App

The primary challenge in creating a lightweight ride-hailing app was ensuring that the core architecture could function seamlessly on resource-constrained devices. The developer utilized Organic Maps as the foundation, customizing it heavily to meet the unique needs of Cuban users. By stripping down the original app, which was over 160MB, to a leaner 58MB, the resulting software became more compatible with budget Android phones often used in Cuba.

At the heart of the architecture was a Python-Django backend, which matched passengers and drivers based on real road distances calculated using OSRM. This backend was specifically designed to be lightweight to handle the intermittent 2G network conditions common in Cuba. The app allowed passengers to request rides, search for addresses, and even track nearby drivers on the map without requiring constant internet connectivity.

Optimizing Map Data for Low-Resource Environments

The largest bottleneck in creating a compact app was the size of the map data. Most navigation apps contain a significant amount of unnecessary information, such as unnamed polygons, hiking trails, and unused languages. To address this, the developer built a custom map pipeline to generate optimized map files tailored to the app's requirements.

Using OpenStreetMap data, the pipeline filtered out all unnamed polygons, such as forests and empty lots, which were irrelevant to the app's functionality. Additionally, by retaining only Spanish and English translations, the size of the metadata section was reduced by approximately 80%. These changes not only minimized the size of the map data but also improved app performance by reducing the processing burden on low-end devices.

Challenges with Offline Functionality

One key feature of the app was its ability to function offline. Passengers could browse the map, search for addresses, and save favorite locations without an internet connection. This was critical in Cuba, where internet connectivity is often unreliable. However, enabling offline functionality introduced significant challenges in terms of data storage and processing.

The developer addressed these challenges by embedding a custom search index directly into the map file. This eliminated the need for external services like Nominatim for address searching, further reducing the app's dependency on internet connectivity. Additionally, the map files were optimized for fast loading and minimal memory usage, ensuring smooth operation even on devices with only 2GB of RAM.

Reducing App Size Without Sacrificing Functionality

Reducing the app size was a critical requirement, as many users in Cuba rely on budget smartphones with limited storage. The developer initially removed features such as track recording, multithreaded rendering, and cloud bookmark sync from the original app. While these changes helped, they were not sufficient to achieve the desired size reduction.

The most significant reduction came from optimizing the map files. By removing unnecessary data and limiting the app to two languages, the developer achieved a drastic decrease in file size. This approach highlights the importance of focusing on the core functionality of an app and eliminating non-essential features to suit the target audience's needs.

Key Takeaways and Practical Insights

Building a lightweight ride-hailing app in a resource-constrained environment requires a combination of technical innovation and practical problem-solving. The developer's approach demonstrates the importance of tailoring software to the specific needs and limitations of its users. By focusing on efficiency and simplicity, the app was able to complete over 20,000 real taxi rides during a fuel crisis in Cuba.

For developers facing similar challenges, key lessons include the value of leveraging open-source tools like OpenStreetMap and Organic Maps, the importance of optimizing data for specific use cases, and the need to prioritize offline functionality in areas with limited internet connectivity. These strategies can serve as a blueprint for creating effective, lightweight applications in any constrained environment.