Skip to content
HomeServicesPackagesProjectsAbout
Projects
Project details

ABE BIYOSIDAL · 2020 – PRESENT

Biocidal Field Management System

Multi-tenant, GIS-based field management software that brings the pest and vector control operations of municipalities and private pest control companies into one system, from a citizen request to end-of-day reconciliation. Used by more than one municipality.

My role: Software architecture: I designed the architecture from scratch and have led its development since 2020.

biocidal.com.tr
live since
2020
each organization’s data kept separate
Multi-tenant
spatial queries
PostGIS
municipalities use it
Several

The Problem

In vector control, the work is spread over many steps: a citizen complaint comes in, becomes a work order, a field team carries out the treatment, the product used is deducted from stock, and finally the reports required by the tender specification are prepared.

When these steps live in different places, answering “which team used which product, where, and how much?” gets hard, and audits and reporting take days.

Architecture

Admin Panel

  • Angular

Map

Field App

  • React Native

Mobile

GraphQL API

  • GraphQL Yoga
  • WebSocket

Live Data and Subscriptions

Database

  • PostgreSQL
  • PostGIS

Per-Tenant Data

Cache

  • Redis

Real-Time Events

Notifications have two layers: a WebSocket subscription while the app is open, and push, SMS and email when it is closed.

What I Built

  • Field Operations

    The request → work order → field treatment → end-of-day reconciliation cycle; work orders move through a state machine.

  • Spatial Intelligence

    Areas of responsibility, route planning and point-in-polygon matching that finds which area a location falls into, with PostGIS.

  • Stock and Costing

    Lot tracking, first-expired-first-out (FEFO) distribution and first-in-first-out (FIFO) costing.

  • Field Custody and Reconciliation

    Products handed to a team are assigned to it; stock is deducted when the field treatment is approved.

  • Permissions and Audit Trail

    Dynamic permissions per module and action; a record of who changed what and when.

  • Reporting and Notifications

    Reports by province and district; in-app, push, SMS and email notifications.

Hard Problems I Solved

  1. 1

    Adding Multi-Tenancy to a Live System

    I added per-organization data isolation to a schema already in production. Queries on tenant-owned tables are filtered automatically in the data layer, so a developer forgetting a filter cannot cause a data leak.

  2. 2

    Stock Valuation

    For lots of the same product with different prices and expiry dates, distribution follows FEFO and costing follows FIFO; consumption in the field is tied to the right lot and cost.

  3. 3

    Data Layer Migration While Live

    The ORM and the GraphQL schema approach were changed while the system was in use; schema definitions moved to hand-written SDL files.

Technologies

  • Angular
  • TypeScript
  • GraphQL
  • Node.js
  • Prisma
  • PostgreSQL
  • PostGIS
  • Redis
  • Firebase

Related Services

Building a similar system? I can work with you from the architecture through to go-live.

Get in touch