Qasim Hassan
Work

2023–present/Full-Stack/Live

BugMapper

Field app for greenhouse trap work, offline sync, and PIM® photo upload.

React Native + web frontend for BugMapper’s agri-tech platform — QR trap deployment, offline-first sync, PIM® photo upload, and the charts/maps advisors use in the greenhouse loop.

  • ~10 sec per trap vs 5–10 min manual counts
  • 30–50% seasonal chemical savings reported
  • Live across Kayseri, Yozgat, Afyon & Mersin
BugMapper

The Problem

BugMapper helps greenhouse teams monitor pests and diseases: traps in the house, a portable PIM® unit for trap photos, a phone app for field work, and a web app for charts and maps.

The hard part was the field. Connectivity inside a greenhouse is unreliable, but work cannot pause. Crews still need to place traps, record counts, and get photos off the PIM unit — then get that data into the cloud so advisors can actually use the web charts.

What I Built

I was the frontend engineer for the mobile and web sides of that loop — React Native field app for Android greenhouse work, and the web UI where advisors see counts, charts, and maps after data syncs.

Major Features

For the people in the greenhouse

  • QR trap deploy — Scan trap and location codes to place a trap at a specific spot.
  • Count and collect — Record pest counts on deployed traps, or collect a trap with a final count.
  • Offline sync queue — Keep working without signal; review and flush pending deployments when you’re back online.
  • PIM® photos — Pull trap images from the on-site PIM unit over the local network, then upload them to the cloud.
  • Disease scouting — Log plant and disease observations tied to sector / tunnel / row.
  • Treatments (PPP) — Record plant-protection applications by QR or manual entry.
  • Field and season context — Switch company, field, and season so every action lands in the right greenhouse.

For advisors on the web

  • Charts and maps — Pest density, risk trends, and location views fed by the same cloud the field app uploads into.
  • Trap and season context — Review work by greenhouse / season instead of raw dumps of field actions.

Under the hood (what made that reliable)

  • Local offline queue — Trap work is stored on-device and synced when the network returns, with a clear Pending Sync screen.
  • Phone as a data mule — Discover the PIM unit on the LAN, stage files on the phone, upload to cloud, confirm back — so photos don’t depend on the greenhouse having stable internet.
  • Separate sync paths — Trap actions and PIM files don’t share one vague upload button; each backlog is visible on its own.
  • Typed QR flows — Trap, location, and chemical codes drive different workflows instead of a generic scanner screen.

Key Challenges

Offline had to feel normal, not broken. Deployments needed to sit on the phone safely and sync from a queue you could see and control.

Photos and trap actions are different jobs. A failed photo upload should never look like a failed trap deploy.

Mobile and web had to tell one story. Field capture and advisor charts share the same traps → PIM® → cloud pipeline — not two parallel products.

Results

Field crews can walk a greenhouse, work offline, pull photos from the PIM® unit, and clear sync when they have signal. That data lands in BugMapper’s cloud for the same charts and maps advisors already use on the web.

Public coverage of the product (Daily Sabah, AA) reports trap reads in about 10 seconds versus 5–10 minutes of manual sticky-trap counting, 30–50% seasonal chemical savings in geothermal, soil-based, and soilless houses, and deployments across Kayseri, Yozgat, Afyon, and Mersin. The broader system is a TÜBİTAK-backed plant-protection decision support stack.

Approach

React Native with Expo for Android field devices; web frontend for advisor charts and maps. Local storage for the offline queue and staged photos. Explicit sync and upload screens so pending work stays visible. Stack details live in the sidebar.

Screens

BugMapper — view 2
BugMapper — view 3