<?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: Sheikh Bashar</title>
    <description>The latest articles on DEV Community by Sheikh Bashar (@sheikh_bashar_8fb0e1ddf8d).</description>
    <link>https://dev.to/sheikh_bashar_8fb0e1ddf8d</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%2F4199047%2Fbb4c4ce6-1ffe-41d3-96c5-71914f95dad0.png</url>
      <title>DEV Community: Sheikh Bashar</title>
      <link>https://dev.to/sheikh_bashar_8fb0e1ddf8d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sheikh_bashar_8fb0e1ddf8d"/>
    <language>en</language>
    <item>
      <title>Building Road Survey Pro: A GPS Road Data Collection App with Expo</title>
      <dc:creator>Sheikh Bashar</dc:creator>
      <pubDate>Wed, 21 Oct 2026 19:35:57 +0000</pubDate>
      <link>https://dev.to/sheikh_bashar_8fb0e1ddf8d/building-road-survey-pro-a-gps-road-data-collection-app-with-expo-22p0</link>
      <guid>https://dev.to/sheikh_bashar_8fb0e1ddf8d/building-road-survey-pro-a-gps-road-data-collection-app-with-expo-22p0</guid>
      <description>&lt;p&gt;I'm building Road Survey Pro, a mobile app for collecting road information in the field with GPS. This post covers the goals and the stack decisions so far. It is a work in progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Field teams need to record new roads: road name, union, ward number, and photos from the start of the road to the end. Paper forms and scattered photos make this slow and hard to verify.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the app does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Collects road name, union, and ward number&lt;/li&gt;
&lt;li&gt;Requires a start photo and an end photo (mandatory)&lt;/li&gt;
&lt;li&gt;Stamps each photo with live GPS location&lt;/li&gt;
&lt;li&gt;Submits everything to a central database&lt;/li&gt;
&lt;li&gt;Scope: new roads only&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stack decisions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mobile app: Expo (React Native). One codebase, fast iteration, easy device testing.&lt;/li&gt;
&lt;li&gt;Database: Neon Postgres.&lt;/li&gt;
&lt;li&gt;Admin web app: hosted on Vercel.&lt;/li&gt;
&lt;li&gt;Photo storage: I looked at Cloudflare R2 but decided against it for now and kept photos with the Postgres-based setup to keep the architecture simple.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons so far
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Make the critical fields mandatory in the UI, not in a later cleanup step. Requiring start and end photos at capture time removes a whole class of bad records.&lt;/li&gt;
&lt;li&gt;Tie location to the photo at capture time. Live GPS on the photo is much more trustworthy than coordinates typed in afterwards.&lt;/li&gt;
&lt;li&gt;Use real local data for pickers. The union list comes from the official upazila site, so field staff pick from a fixed list instead of typing names.&lt;/li&gt;
&lt;li&gt;Pick one mobile stack and stay with it. I considered a separate native Android build, then stayed with Expo to avoid maintaining two apps.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Admin dashboard for reviewing submissions, offline capture for areas with weak signal, and export to CSV for downstream road datasets.&lt;/p&gt;

&lt;p&gt;If you have built field data collection apps, I'd love to hear how you handled offline sync and photo uploads.&lt;/p&gt;

</description>
      <category>expo</category>
      <category>reactnative</category>
      <category>postgres</category>
      <category>gis</category>
    </item>
  </channel>
</rss>
