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
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
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
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