<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gürhan Aksoy</title>
    <description>The latest articles on DEV Community by Gürhan Aksoy (@biper).</description>
    <link>https://dev.to/biper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4185360%2F35c5dc4e-de71-4ab5-b4c4-aad0fc75c99c.jpg</url>
      <title>DEV Community: Gürhan Aksoy</title>
      <link>https://dev.to/biper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/biper"/>
    <language>en</language>
    <item>
      <title>Building Biper: A Ride-Hailing Platform with Flutter, Node.js, PostGIS, Redis, and OpenStreetMap</title>
      <dc:creator>Gürhan Aksoy</dc:creator>
      <pubDate>Wed, 14 Oct 2026 19:05:42 +0000</pubDate>
      <link>https://dev.to/biper/building-biper-a-ride-hailing-platform-with-flutter-nodejs-postgis-redis-and-openstreetmap-1mcl</link>
      <guid>https://dev.to/biper/building-biper-a-ride-hailing-platform-with-flutter-nodejs-postgis-redis-and-openstreetmap-1mcl</guid>
      <description>&lt;p&gt;Engineering a real-time mobility platform in Türkiye — from driver dispatch and geospatial queries to mapping infrastructure and subscription-based economics.&lt;/p&gt;

&lt;p&gt;By Gürhan Aksoy | Founder, Biper&lt;/p&gt;

&lt;p&gt;Published: October 14, 2026&lt;/p&gt;

&lt;p&gt;Topics: Software Architecture, Flutter, Node.js, PostgreSQL, PostGIS, Redis, OpenStreetMap, Mobility Technology&lt;/p&gt;




&lt;p&gt;Introduction: Building a Ride-Hailing Platform Is More Than Building Two Mobile Apps&lt;/p&gt;

&lt;p&gt;When people think about ride-hailing platforms, they usually imagine a relatively simple workflow:&lt;/p&gt;

&lt;p&gt;A passenger opens an application, selects a destination, requests a ride, and waits for a driver.&lt;/p&gt;

&lt;p&gt;From the user's perspective, the experience should feel effortless.&lt;/p&gt;

&lt;p&gt;From an engineering perspective, however, ride-hailing is a complex real-time systems problem.&lt;/p&gt;

&lt;p&gt;Behind every successful journey are multiple interconnected services responsible for location tracking, geospatial queries, driver availability, dispatch decisions, routing, pricing, authentication, and communication.&lt;/p&gt;

&lt;p&gt;At Biper, we're developing a mobility technology platform in Türkiye with an additional challenge:&lt;/p&gt;

&lt;p&gt;How can we build a scalable ride-hailing infrastructure around a subscription-based business model instead of charging drivers a percentage of every completed journey?&lt;/p&gt;

&lt;p&gt;This article explores the technologies we're using, the architectural decisions behind our platform, and some of the engineering challenges we're working to solve.&lt;/p&gt;

&lt;p&gt;Our technology stack includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flutter for passenger and driver mobile applications.&lt;/li&gt;
&lt;li&gt;Node.js and Fastify for backend services.&lt;/li&gt;
&lt;li&gt;PostgreSQL and PostGIS for relational and geographic data.&lt;/li&gt;
&lt;li&gt;Redis for caching and time-sensitive operations.&lt;/li&gt;
&lt;li&gt;Socket.IO for real-time communication.&lt;/li&gt;
&lt;li&gt;OpenStreetMap-based geographic infrastructure.&lt;/li&gt;
&lt;li&gt;Docker for service deployment and isolation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Biper is an early-stage mobility technology venture. The architecture described here reflects our development work and technical direction, not a claim of proven large-scale production performance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Engineering Challenges Behind Ride-Hailing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A conventional application might retrieve data, display it, and wait for another request.&lt;/p&gt;

&lt;p&gt;A ride-hailing application operates differently.&lt;/p&gt;

&lt;p&gt;The system must continuously react to changing conditions.&lt;/p&gt;

&lt;p&gt;Drivers move across geographic regions.&lt;/p&gt;

&lt;p&gt;Passengers submit requests at unpredictable times.&lt;/p&gt;

&lt;p&gt;Network connections are interrupted.&lt;/p&gt;

&lt;p&gt;Traffic conditions change.&lt;/p&gt;

&lt;p&gt;Drivers accept or reject offers.&lt;/p&gt;

&lt;p&gt;Passengers cancel journeys or change pickup locations.&lt;/p&gt;

&lt;p&gt;All of these events affect the state of the system.&lt;/p&gt;

&lt;p&gt;For a ride-hailing platform, five engineering challenges are particularly important.&lt;/p&gt;

&lt;p&gt;Real-Time State Management&lt;/p&gt;

&lt;p&gt;The backend must maintain a reasonably accurate representation of available drivers and active journeys.&lt;/p&gt;

&lt;p&gt;Geographic Search&lt;/p&gt;

&lt;p&gt;The platform must identify suitable drivers near a pickup location.&lt;/p&gt;

&lt;p&gt;Dispatch Coordination&lt;/p&gt;

&lt;p&gt;A single journey request may need to be offered to multiple drivers without creating conflicting assignments.&lt;/p&gt;

&lt;p&gt;Reliable Communication&lt;/p&gt;

&lt;p&gt;Mobile applications must receive timely updates even when network connectivity is inconsistent.&lt;/p&gt;

&lt;p&gt;Cost-Efficient Mapping&lt;/p&gt;

&lt;p&gt;Address search, route calculation, and geographic services must remain financially sustainable as usage increases.&lt;/p&gt;

&lt;p&gt;These challenges influence nearly every architectural decision we make.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Why We Chose Flutter for Our Mobile Applications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Biper consists of separate passenger and driver applications.&lt;/p&gt;

&lt;p&gt;Both applications require responsive interfaces, location-aware functionality, real-time updates, and consistent interaction patterns.&lt;/p&gt;

&lt;p&gt;We chose Flutter as our cross-platform mobile development framework.&lt;/p&gt;

&lt;p&gt;Flutter allows us to develop Android and iOS applications using a shared technology foundation.&lt;/p&gt;

&lt;p&gt;For an early-stage technology company, this provides several practical advantages.&lt;/p&gt;

&lt;p&gt;Shared Development Expertise&lt;/p&gt;

&lt;p&gt;Our engineering efforts can focus on one primary mobile framework rather than maintaining entirely separate native application stacks.&lt;/p&gt;

&lt;p&gt;Consistent Interface Components&lt;/p&gt;

&lt;p&gt;Reusable interface components help maintain consistency across applications.&lt;/p&gt;

&lt;p&gt;Faster Iteration&lt;/p&gt;

&lt;p&gt;When testing reveals usability problems, we can update application logic and interfaces without duplicating every change across two independent native codebases.&lt;/p&gt;

&lt;p&gt;However, cross-platform development does not eliminate platform-specific challenges.&lt;/p&gt;

&lt;p&gt;Location permissions, background execution, notifications, and operating-system restrictions still require careful handling.&lt;/p&gt;

&lt;p&gt;Separating Map State from Business State&lt;/p&gt;

&lt;p&gt;One architectural principle we've adopted is separating map rendering concerns from journey and business logic.&lt;/p&gt;

&lt;p&gt;For example, the map interface may need to manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Driver markers.&lt;/li&gt;
&lt;li&gt;Pickup and destination markers.&lt;/li&gt;
&lt;li&gt;Route polylines.&lt;/li&gt;
&lt;li&gt;Camera position.&lt;/li&gt;
&lt;li&gt;Map interaction state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meanwhile, the journey system manages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ride requests.&lt;/li&gt;
&lt;li&gt;Driver assignments.&lt;/li&gt;
&lt;li&gt;Journey status.&lt;/li&gt;
&lt;li&gt;Cancellation.&lt;/li&gt;
&lt;li&gt;Pickup changes.&lt;/li&gt;
&lt;li&gt;Journey completion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Separating these responsibilities reduces unnecessary coupling between visual map updates and business operations.&lt;/p&gt;

&lt;p&gt;This becomes particularly important when the interface must respond to frequent location changes.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Backend Architecture: Node.js, Fastify, and PostgreSQL&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Biper's backend uses Node.js with Fastify.&lt;/p&gt;

&lt;p&gt;The backend provides APIs for authentication, passenger management, driver management, journey requests, dispatch, pricing, and operational services.&lt;/p&gt;

&lt;p&gt;Fastify provides a structured foundation for building HTTP APIs within the Node.js ecosystem.&lt;/p&gt;

&lt;p&gt;PostgreSQL serves as our primary relational database.&lt;/p&gt;

&lt;p&gt;This combination allows us to keep business rules within backend services while maintaining structured persistence for important records.&lt;/p&gt;

&lt;p&gt;Why Relational Data Matters&lt;/p&gt;

&lt;p&gt;Ride-hailing systems involve relationships between many entities.&lt;/p&gt;

&lt;p&gt;A journey can be associated with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A passenger.&lt;/li&gt;
&lt;li&gt;A driver.&lt;/li&gt;
&lt;li&gt;A vehicle.&lt;/li&gt;
&lt;li&gt;A service category.&lt;/li&gt;
&lt;li&gt;Pickup and destination coordinates.&lt;/li&gt;
&lt;li&gt;Pricing information.&lt;/li&gt;
&lt;li&gt;Journey events.&lt;/li&gt;
&lt;li&gt;Payment or subscription records.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Relational consistency is important because these relationships directly affect operational correctness.&lt;/p&gt;

&lt;p&gt;For example, two drivers should not be independently assigned to the same journey as a result of conflicting backend operations.&lt;/p&gt;

&lt;p&gt;Preventing such inconsistencies requires appropriate database constraints, transactional logic, and careful coordination between services.&lt;/p&gt;

&lt;p&gt;Our Architectural Principle&lt;/p&gt;

&lt;p&gt;Real-time communication should distribute state changes, but the backend and database must remain authoritative for business-critical journey state.&lt;/p&gt;

&lt;p&gt;A mobile application may temporarily display outdated information.&lt;/p&gt;

&lt;p&gt;A socket connection may disconnect.&lt;/p&gt;

&lt;p&gt;An event may arrive later than expected.&lt;/p&gt;

&lt;p&gt;For these reasons, the application must be able to recover the current journey state from the backend.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Geospatial Engineering with PostgreSQL and PostGIS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Geographic data is fundamental to mobility applications.&lt;/p&gt;

&lt;p&gt;Every driver has a location.&lt;/p&gt;

&lt;p&gt;Every journey has a pickup point.&lt;/p&gt;

&lt;p&gt;Every destination exists within a geographic region.&lt;/p&gt;

&lt;p&gt;The platform must perform location-aware queries efficiently.&lt;/p&gt;

&lt;p&gt;This is where PostGIS becomes particularly useful.&lt;/p&gt;

&lt;p&gt;PostGIS extends PostgreSQL with geographic data types and spatial operations.&lt;/p&gt;

&lt;p&gt;Finding Nearby Drivers&lt;/p&gt;

&lt;p&gt;Consider a passenger requesting a journey from a particular location.&lt;/p&gt;

&lt;p&gt;The system needs to identify available drivers within a defined search radius.&lt;/p&gt;

&lt;p&gt;A simplified PostGIS query might look like this:&lt;/p&gt;

&lt;p&gt;SELECT&lt;br&gt;
    driver_id,&lt;br&gt;
    ST_Distance(&lt;br&gt;
        location,&lt;br&gt;
        ST_SetSRID(&lt;br&gt;
            ST_MakePoint(28.9784, 41.0082),&lt;br&gt;
            4326&lt;br&gt;
        )::geography&lt;br&gt;
    ) AS distance_meters&lt;br&gt;
FROM driver_locations&lt;br&gt;
WHERE is_available = TRUE&lt;br&gt;
  AND ST_DWithin(&lt;br&gt;
      location,&lt;br&gt;
      ST_SetSRID(&lt;br&gt;
          ST_MakePoint(28.9784, 41.0082),&lt;br&gt;
          4326&lt;br&gt;
      )::geography,&lt;br&gt;
      5000&lt;br&gt;
  )&lt;br&gt;
ORDER BY distance_meters&lt;br&gt;
LIMIT 20;&lt;/p&gt;

&lt;p&gt;This example assumes that "location" is stored as a PostGIS "geography" value using WGS84 coordinates.&lt;/p&gt;

&lt;p&gt;The query searches for available drivers within five kilometers of a location in Istanbul.&lt;/p&gt;

&lt;p&gt;It is an illustrative example, not a copy of Biper's production database schema.&lt;/p&gt;

&lt;p&gt;Why Geographic Indexing Matters&lt;/p&gt;

&lt;p&gt;Without appropriate spatial indexing, geographic searches can become expensive as datasets grow.&lt;/p&gt;

&lt;p&gt;PostGIS supports spatial indexes that can accelerate location-based queries.&lt;/p&gt;

&lt;p&gt;For a ride-hailing system, this can be important when thousands of location records must be evaluated.&lt;/p&gt;

&lt;p&gt;However, database distance is not the same as road travel distance.&lt;/p&gt;

&lt;p&gt;A driver located two kilometers away geographically may require a much longer road journey to reach the passenger.&lt;/p&gt;

&lt;p&gt;This distinction becomes especially relevant in cities with complex road networks, bridges, restricted turns, and geographic barriers.&lt;/p&gt;

&lt;p&gt;Geographic proximity is useful for candidate discovery. Road-network travel time is often more meaningful for final driver selection.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Real-Time Communication with Socket.IO&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HTTP APIs work well for many business operations.&lt;/p&gt;

&lt;p&gt;However, ride-hailing systems also require communication initiated by the server.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A passenger requests a journey.&lt;/p&gt;

&lt;p&gt;The backend identifies candidate drivers.&lt;/p&gt;

&lt;p&gt;A driver receives an offer.&lt;/p&gt;

&lt;p&gt;The driver accepts.&lt;/p&gt;

&lt;p&gt;The passenger receives an assignment update.&lt;/p&gt;

&lt;p&gt;The journey status changes.&lt;/p&gt;

&lt;p&gt;These events should be communicated without requiring every application to continuously poll the backend.&lt;/p&gt;

&lt;p&gt;Biper uses Socket.IO for real-time communication.&lt;/p&gt;

&lt;p&gt;A Simplified Journey Event Flow&lt;/p&gt;

&lt;p&gt;Passenger Application&lt;br&gt;
        |&lt;br&gt;
        | Create Ride Request&lt;br&gt;
        v&lt;br&gt;
Backend API&lt;br&gt;
        |&lt;br&gt;
        | Validate Request&lt;br&gt;
        v&lt;br&gt;
Dispatch Service&lt;br&gt;
        |&lt;br&gt;
        | Identify Candidate Drivers&lt;br&gt;
        v&lt;br&gt;
Real-Time Communication&lt;br&gt;
        |&lt;br&gt;
        | Send Ride Offers&lt;br&gt;
        v&lt;br&gt;
Driver Application&lt;br&gt;
        |&lt;br&gt;
        | Accept Offer&lt;br&gt;
        v&lt;br&gt;
Backend Validation&lt;br&gt;
        |&lt;br&gt;
        | Persist Assignment&lt;br&gt;
        v&lt;br&gt;
Passenger + Driver Updates&lt;/p&gt;

&lt;p&gt;This is a conceptual representation of the workflow.&lt;/p&gt;

&lt;p&gt;The actual implementation must also handle timeouts, cancellations, disconnections, and conflicting events.&lt;/p&gt;

&lt;p&gt;Handling Reconnection&lt;/p&gt;

&lt;p&gt;Mobile network connections are unreliable.&lt;/p&gt;

&lt;p&gt;A passenger may enter an elevator.&lt;/p&gt;

&lt;p&gt;A driver may move through an area with poor coverage.&lt;/p&gt;

&lt;p&gt;An application may be suspended by the operating system.&lt;/p&gt;

&lt;p&gt;The application cannot assume that every real-time event will be received.&lt;/p&gt;

&lt;p&gt;For this reason, Biper's application architecture includes mechanisms for reconciling journey state through backend APIs.&lt;/p&gt;

&lt;p&gt;When an application resumes, it can retrieve the authoritative active journey rather than relying exclusively on previously received socket events.&lt;/p&gt;

&lt;p&gt;This is an important design principle:&lt;/p&gt;

&lt;p&gt;Sockets provide timely updates. APIs provide state recovery.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Designing a Time-Limited Driver Dispatch System&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Driver dispatch is one of the most important components of a ride-hailing platform.&lt;/p&gt;

&lt;p&gt;A naive implementation might simply send a request to the closest driver.&lt;/p&gt;

&lt;p&gt;However, the closest driver may be unavailable, disconnected, or unwilling to accept the journey.&lt;/p&gt;

&lt;p&gt;A practical dispatch system needs to consider multiple candidates.&lt;/p&gt;

&lt;p&gt;Biper's dispatch design uses time-limited offers and successive search waves.&lt;/p&gt;

&lt;p&gt;The objective is to give suitable drivers an opportunity to accept a journey while limiting unnecessary passenger waiting time.&lt;/p&gt;

&lt;p&gt;Dispatch Challenges&lt;/p&gt;

&lt;p&gt;Several issues must be addressed:&lt;/p&gt;

&lt;p&gt;Offer expiration: An unanswered offer should not remain valid indefinitely.&lt;/p&gt;

&lt;p&gt;Candidate eligibility: Drivers must satisfy relevant availability and service-category requirements.&lt;/p&gt;

&lt;p&gt;Concurrent acceptance: Multiple acceptance attempts must not create conflicting assignments.&lt;/p&gt;

&lt;p&gt;Driver movement: Candidate locations can change during the dispatch process.&lt;/p&gt;

&lt;p&gt;Passenger cancellation: A canceled request should no longer produce valid assignments.&lt;/p&gt;

&lt;p&gt;Service availability: Search behavior may need to respect operational and geographic restrictions.&lt;/p&gt;

&lt;p&gt;A Conceptual Dispatch State Machine&lt;/p&gt;

&lt;p&gt;REQUESTED&lt;br&gt;
    |&lt;br&gt;
    v&lt;br&gt;
SEARCHING&lt;br&gt;
    |&lt;br&gt;
    +----&amp;gt; OFFER_SENT&lt;br&gt;
    |          |&lt;br&gt;
    |          +----&amp;gt; ACCEPTED&lt;br&gt;
    |          |&lt;br&gt;
    |          +----&amp;gt; EXPIRED&lt;br&gt;
    |          |&lt;br&gt;
    |          +----&amp;gt; REJECTED&lt;br&gt;
    |&lt;br&gt;
    +----&amp;gt; NEXT_SEARCH_WAVE&lt;br&gt;
    |&lt;br&gt;
    +----&amp;gt; NO_DRIVER_FOUND&lt;br&gt;
    |&lt;br&gt;
    +----&amp;gt; CANCELLED&lt;/p&gt;

&lt;p&gt;The exact implementation depends on business rules.&lt;/p&gt;

&lt;p&gt;The central challenge is ensuring that state transitions remain consistent even when several events occur almost simultaneously.&lt;/p&gt;

&lt;p&gt;For example, an offer expiration and a driver acceptance might arrive within milliseconds of each other.&lt;/p&gt;

&lt;p&gt;The backend must determine which operation is valid and ensure that the result is persisted consistently.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Redis for Caching and Time-Sensitive Operations&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Redis is useful in systems where certain information must be accessed frequently.&lt;/p&gt;

&lt;p&gt;In Biper's architecture, Redis supports caching and time-sensitive backend operations.&lt;/p&gt;

&lt;p&gt;Potential use cases include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frequently requested location data.&lt;/li&gt;
&lt;li&gt;Short-lived geographic search results.&lt;/li&gt;
&lt;li&gt;Temporary dispatch information.&lt;/li&gt;
&lt;li&gt;Rate-limiting counters.&lt;/li&gt;
&lt;li&gt;Cached application configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Redis can reduce repeated work and improve response times for selected operations.&lt;/p&gt;

&lt;p&gt;However, not every type of information should be stored exclusively in Redis.&lt;/p&gt;

&lt;p&gt;Critical journey records and business transactions require durable persistence.&lt;/p&gt;

&lt;p&gt;Our architectural approach is to distinguish between temporary operational data and authoritative business records.&lt;/p&gt;

&lt;p&gt;This separation is important when services restart or network failures occur.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Building Geographic Infrastructure with OpenStreetMap&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mapping is one of the most expensive and technically challenging areas of mobility software.&lt;/p&gt;

&lt;p&gt;A ride-hailing platform may need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Address autocomplete.&lt;/li&gt;
&lt;li&gt;Place search.&lt;/li&gt;
&lt;li&gt;Reverse geocoding.&lt;/li&gt;
&lt;li&gt;Route calculation.&lt;/li&gt;
&lt;li&gt;Distance estimation.&lt;/li&gt;
&lt;li&gt;Estimated travel time.&lt;/li&gt;
&lt;li&gt;Geographic service-area validation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using commercial mapping APIs for every operation can create significant external dependencies.&lt;/p&gt;

&lt;p&gt;At Biper, we're developing an OpenStreetMap-based geographic data infrastructure to support greater control over selected mapping capabilities.&lt;/p&gt;

&lt;p&gt;Why OpenStreetMap?&lt;/p&gt;

&lt;p&gt;OpenStreetMap provides openly licensed geographic data maintained by a global community.&lt;/p&gt;

&lt;p&gt;Its data includes roads, geographic features, addresses, and points of interest.&lt;/p&gt;

&lt;p&gt;For developers, OpenStreetMap can serve as a foundation for building specialized geographic services.&lt;/p&gt;

&lt;p&gt;However, OpenStreetMap data is not the same as a complete hosted mapping platform.&lt;/p&gt;

&lt;p&gt;A production mapping system still needs appropriate software for search, routing, indexing, infrastructure management, and monitoring.&lt;/p&gt;

&lt;p&gt;Our Geographic Infrastructure Direction&lt;/p&gt;

&lt;p&gt;Our development work includes building an internal geographic data index, initially focused on Turkish cities.&lt;/p&gt;

&lt;p&gt;The objective is to support services such as address discovery and reverse geocoding while reducing unnecessary external API requests.&lt;/p&gt;

&lt;p&gt;We are also evaluating routing-provider strategies that combine internally managed and external services.&lt;/p&gt;

&lt;p&gt;Why a Hybrid Approach Makes Sense&lt;/p&gt;

&lt;p&gt;A self-hosted mapping system may offer greater control over data and infrastructure.&lt;/p&gt;

&lt;p&gt;However, it introduces operational responsibilities.&lt;/p&gt;

&lt;p&gt;Geographic datasets require updates.&lt;/p&gt;

&lt;p&gt;Search indexes require maintenance.&lt;/p&gt;

&lt;p&gt;Routing engines consume computing resources.&lt;/p&gt;

&lt;p&gt;Travel-time estimates may require additional traffic information.&lt;/p&gt;

&lt;p&gt;For these reasons, a hybrid strategy can be more practical than assuming every mapping capability must be developed internally.&lt;/p&gt;

&lt;p&gt;OpenStreetMap Licensing&lt;/p&gt;

&lt;p&gt;OpenStreetMap data is distributed under the Open Database License (ODbL).&lt;/p&gt;

&lt;p&gt;Applications using the data must follow the relevant attribution and licensing requirements.&lt;/p&gt;

&lt;p&gt;The legal obligations depend on how the data is used, modified, and distributed.&lt;/p&gt;

&lt;p&gt;For any mobility company developing geographic infrastructure, license compliance should be treated as part of system architecture rather than an afterthought.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Route Distance Is Not the Same as Travel Time&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One of the most interesting engineering problems in mobility technology is estimating arrival times.&lt;/p&gt;

&lt;p&gt;A route calculation can provide distance.&lt;/p&gt;

&lt;p&gt;But distance alone does not determine how long a journey will take.&lt;/p&gt;

&lt;p&gt;Travel time can depend on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Road classification.&lt;/li&gt;
&lt;li&gt;Speed limits.&lt;/li&gt;
&lt;li&gt;Intersections.&lt;/li&gt;
&lt;li&gt;Turn restrictions.&lt;/li&gt;
&lt;li&gt;Traffic congestion.&lt;/li&gt;
&lt;li&gt;Time of day.&lt;/li&gt;
&lt;li&gt;Weather conditions.&lt;/li&gt;
&lt;li&gt;Local road characteristics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is particularly important in Istanbul.&lt;/p&gt;

&lt;p&gt;Two routes with similar distances may have very different travel times.&lt;/p&gt;

&lt;p&gt;For a mobility platform, inaccurate arrival estimates can affect both passenger expectations and dispatch decisions.&lt;/p&gt;

&lt;p&gt;Our Approach&lt;/p&gt;

&lt;p&gt;Biper's mapping development includes evaluating different routing and estimated-arrival-time strategies.&lt;/p&gt;

&lt;p&gt;One area of interest is combining road-network calculations with additional information where available.&lt;/p&gt;

&lt;p&gt;The long-term objective is to improve estimation quality while managing infrastructure costs.&lt;/p&gt;

&lt;p&gt;This is an ongoing engineering challenge rather than a solved problem.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Subscription-Based Economics Change the Technical Requirements&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Biper's business model introduces another important architectural consideration.&lt;/p&gt;

&lt;p&gt;Many ride-hailing platforms use transaction-based commercial arrangements.&lt;/p&gt;

&lt;p&gt;Biper is developing a model in which drivers access the platform through subscription packages instead of paying a percentage of every completed journey.&lt;/p&gt;

&lt;p&gt;This affects more than pricing.&lt;/p&gt;

&lt;p&gt;It also changes the platform's backend requirements.&lt;/p&gt;

&lt;p&gt;Subscription Management&lt;/p&gt;

&lt;p&gt;The system needs to manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription packages.&lt;/li&gt;
&lt;li&gt;Package eligibility.&lt;/li&gt;
&lt;li&gt;Activation and expiration.&lt;/li&gt;
&lt;li&gt;Payment status.&lt;/li&gt;
&lt;li&gt;Access restrictions.&lt;/li&gt;
&lt;li&gt;Administrative approval processes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Driver Availability Rules&lt;/p&gt;

&lt;p&gt;Driver availability may depend on both operational status and subscription eligibility.&lt;/p&gt;

&lt;p&gt;For example, a driver might be technically connected to the platform but not eligible to receive new journey offers because the relevant package conditions are not satisfied.&lt;/p&gt;

&lt;p&gt;These rules must be enforced consistently by the backend.&lt;/p&gt;

&lt;p&gt;Economic Sustainability&lt;/p&gt;

&lt;p&gt;A subscription-based model may create more predictable platform fees for drivers.&lt;/p&gt;

&lt;p&gt;However, its sustainability depends on driver retention, subscription pricing, passenger demand, and operational costs.&lt;/p&gt;

&lt;p&gt;For engineers, this highlights an important lesson:&lt;/p&gt;

&lt;p&gt;Business-model decisions become software architecture decisions.&lt;/p&gt;

&lt;p&gt;The way a platform earns revenue influences its data models, access controls, operational workflows, and monitoring requirements.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;What We're Learning About Mobility Architecture&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Building Biper has reinforced several engineering principles.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep Business State Authoritative&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Real-time events are useful, but critical journey state must remain consistent and recoverable.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Separate Geographic Logic from UI Logic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Map rendering, driver locations, route calculation, and journey management should not become one tightly coupled component.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Design for Network Failures&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mobile applications must recover gracefully from disconnections and interruptions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Treat Mapping as Infrastructure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Address search, geocoding, and routing deserve dedicated architectural attention.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Measure Operational Performance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dispatch quality cannot be evaluated solely by whether a driver eventually accepts a journey.&lt;/p&gt;

&lt;p&gt;Matching time, failed offers, cancellations, and system latency also matter.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build Around Real Business Constraints&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Subscription eligibility, geographic restrictions, vehicle categories, and pricing rules must be represented consistently throughout the system.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Avoid Premature Claims of Scalability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A system's architecture may be designed for growth, but scalability must ultimately be demonstrated through testing and production measurements.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;What's Next for Biper?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Our development priorities include improving the reliability of the passenger and driver applications, refining dispatch behavior, expanding geographic data capabilities, and evaluating platform performance across different operating conditions.&lt;/p&gt;

&lt;p&gt;We are also working on the practical challenges of introducing mobility technology into additional Turkish cities.&lt;/p&gt;

&lt;p&gt;Istanbul and Izmir are part of our early development and testing strategy.&lt;/p&gt;

&lt;p&gt;Our longer-term ambition is to create a flexible technology platform capable of supporting different mobility requirements.&lt;/p&gt;

&lt;p&gt;That ambition will require continued engineering work, operational validation, and compliance with applicable transportation regulations.&lt;/p&gt;

&lt;p&gt;Frequently Asked Technical Questions&lt;/p&gt;

&lt;p&gt;What is Biper?&lt;/p&gt;

&lt;p&gt;Biper is a Turkish mobility technology startup developing passenger and driver applications, real-time dispatch infrastructure, and a subscription-based platform model.&lt;/p&gt;

&lt;p&gt;What programming languages and frameworks does Biper use?&lt;/p&gt;

&lt;p&gt;Biper uses Flutter for mobile applications and Node.js with Fastify for backend services.&lt;/p&gt;

&lt;p&gt;What database does Biper use?&lt;/p&gt;

&lt;p&gt;Biper uses PostgreSQL, with PostGIS supporting geographic data operations.&lt;/p&gt;

&lt;p&gt;How does Biper manage real-time communication?&lt;/p&gt;

&lt;p&gt;Biper uses Socket.IO for real-time application communication, alongside backend APIs for authoritative state retrieval and recovery.&lt;/p&gt;

&lt;p&gt;Does Biper use OpenStreetMap?&lt;/p&gt;

&lt;p&gt;Yes. Biper is developing OpenStreetMap-based geographic infrastructure for selected mapping and location services.&lt;/p&gt;

&lt;p&gt;How does Biper find nearby drivers?&lt;/p&gt;

&lt;p&gt;Biper uses location-aware backend logic and geographic data to identify eligible driver candidates. The dispatch system coordinates time-limited offers and assignment decisions.&lt;/p&gt;

&lt;p&gt;Is Biper open source?&lt;/p&gt;

&lt;p&gt;Biper uses several open-source technologies, but this does not mean that the complete Biper application or its proprietary backend is open source.&lt;/p&gt;

&lt;p&gt;How does Biper generate revenue?&lt;/p&gt;

&lt;p&gt;Biper's stated business model uses driver subscriptions and packages rather than percentage-based commissions on completed journeys.&lt;/p&gt;

&lt;p&gt;Is Biper available internationally?&lt;/p&gt;

&lt;p&gt;Biper is currently focused on development and testing in Türkiye. International commercial availability is not established in this article.&lt;/p&gt;




&lt;p&gt;Conclusion: Mobility Platforms Are Distributed Systems with Human Consequences&lt;/p&gt;

&lt;p&gt;Building a ride-hailing platform is an exercise in coordinating people, geography, software, and real-time decisions.&lt;/p&gt;

&lt;p&gt;A technically successful system must do more than process requests quickly.&lt;/p&gt;

&lt;p&gt;It must also provide reliable information, recover from failures, support operational rules, and remain financially sustainable.&lt;/p&gt;

&lt;p&gt;At Biper, we're exploring how modern software infrastructure can support a different approach to urban mobility.&lt;/p&gt;

&lt;p&gt;Our technology stack combines Flutter, Node.js, Fastify, PostgreSQL, PostGIS, Redis, Socket.IO, and OpenStreetMap-based geographic infrastructure.&lt;/p&gt;

&lt;p&gt;But the most important lesson is not about any particular framework.&lt;/p&gt;

&lt;p&gt;The real engineering challenge is designing a system where technology, operational reliability, and economic incentives work together.&lt;/p&gt;

&lt;p&gt;We're still building, testing, and learning.&lt;/p&gt;

&lt;p&gt;And we believe the technical challenges of mobility infrastructure are worth discussing openly with the global developer community.&lt;/p&gt;

&lt;p&gt;Biper — Building Mobility Technology in Türkiye.&lt;/p&gt;




&lt;p&gt;About the Author&lt;/p&gt;

&lt;p&gt;Gürhan Aksoy is the founder of Biper, a Turkish mobility technology venture developing real-time ride-hailing infrastructure and subscription-based driver services.&lt;/p&gt;

&lt;p&gt;Biper focuses on mobile application development, geographic information systems, dispatch technology, and digital transportation infrastructure.&lt;/p&gt;

&lt;p&gt;Official website: biper.com.tr&lt;/p&gt;




&lt;p&gt;Technical References&lt;/p&gt;

&lt;p&gt;Flutter Documentation&lt;br&gt;
Official documentation for Flutter application development.&lt;/p&gt;

&lt;p&gt;Fastify Documentation&lt;br&gt;
Official documentation for the Fastify web framework.&lt;/p&gt;

&lt;p&gt;PostgreSQL Documentation&lt;br&gt;
Official documentation for PostgreSQL relational databases.&lt;/p&gt;

&lt;p&gt;PostGIS Documentation&lt;br&gt;
Official documentation for PostGIS geographic extensions.&lt;/p&gt;

&lt;p&gt;Redis Documentation&lt;br&gt;
Official documentation for Redis.&lt;/p&gt;

&lt;p&gt;Socket.IO Documentation&lt;br&gt;
Official documentation for Socket.IO real-time communication.&lt;/p&gt;

&lt;p&gt;OpenStreetMap Foundation&lt;br&gt;
OpenStreetMap licensing and attribution guidelines.&lt;/p&gt;

&lt;p&gt;Biper Technology&lt;br&gt;
Official information about Biper's business model and development activities.&lt;/p&gt;

&lt;p&gt;Technical disclosure: The Biper-specific architecture described in this article is based on information supplied by the development team. Simplified diagrams and SQL examples are illustrative. The article does not disclose production credentials, proprietary source code, or independently verified performance benchmarks.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>flutter</category>
      <category>mobile</category>
      <category>node</category>
    </item>
  </channel>
</rss>
