Naar de inhoud
PakketArchitectuuraudit: onafhankelijke review en stapsgewijs migratieplan in 5–7 werkdagen
Projecten
Projectdetails

ABE BIYOSIDAL · 2020 – HEDEN

Biocidal buitendienstsysteem

Multi-tenant, GIS-gebaseerde software voor het aansturen van buitendienstteams, die de ongedierte- en vectorbestrijding van gemeenten en particuliere bestrijdingsbedrijven in één systeem samenbrengt, van de melding van een inwoner tot de afsluiting aan het eind van de dag. Wordt door meerdere gemeenten gebruikt.

Mijn rol: Softwarearchitectuur: ik heb de architectuur vanaf nul ontworpen en leid sinds 2020 de ontwikkeling.

biocidal.com.tr
live sinds
2020
data per organisatie gescheiden
Multi-tenant
ruimtelijke query’s
PostGIS
gemeenten gebruiken het
Meerdere

Het probleem

Bij vectorbestrijding is het werk over veel stappen verdeeld: er komt een klacht van een inwoner binnen, die wordt een werkorder, een buitendienstteam voert de behandeling uit, het gebruikte middel wordt van de voorraad afgeboekt en tot slot worden de rapportages opgesteld die het bestek van de aanbesteding vraagt.

Staan die stappen op verschillende plekken, dan is de vraag “welk team heeft waar welk middel gebruikt, en hoeveel?” lastig te beantwoorden, en kosten controles en rapportages dagen.

Architectuur

Beheerpaneel

  • Angular

Kaart

Buitendienst-app

  • React Native

Mobiel

GraphQL-API

  • GraphQL Yoga
  • WebSocket

Live data en subscriptions

Database

  • PostgreSQL
  • PostGIS

Data per tenant

Cache

  • Redis

Realtime events

Meldingen werken in twee lagen: via een WebSocket-subscription zolang de app open is, en via push, sms en e-mail als hij gesloten is.

Wat ik heb gebouwd

  • Buitendienst

    De cyclus melding → werkorder → behandeling ter plaatse → dagafsluiting; werkorders doorlopen een state machine.

  • Ruimtelijke intelligentie

    Verantwoordelijkheidsgebieden, routeplanning en point-in-polygon-matching die bepaalt in welk gebied een locatie valt, met PostGIS.

  • Voorraad en kostprijs

    Lotregistratie, uitgifte op houdbaarheidsdatum (FEFO) en waardering volgens first in, first out (FIFO).

  • Uitgifte aan teams en afstemming

    Middelen die aan een team worden meegegeven, staan op naam van dat team; de voorraad wordt afgeboekt zodra de behandeling ter plaatse is goedgekeurd.

  • Rechten en audittrail

    Dynamische rechten per module en actie; een registratie van wie wat wanneer heeft gewijzigd.

  • Rapportages en meldingen

    Rapportages per provincie en district; meldingen in de app, via push, sms en e-mail.

Lastige problemen die ik heb opgelost

  1. 1

    Multi-tenancy achteraf toevoegen aan een live systeem

    Ik heb dataisolatie per organisatie toegevoegd aan een schema dat al in productie draaide. Query’s op tenant-gebonden tabellen worden in de datalaag automatisch gefilterd, zodat een vergeten filter van een developer niet tot een datalek leidt.

  2. 2

    Voorraadwaardering

    Voor lots van hetzelfde middel met verschillende prijzen en houdbaarheidsdatums wordt de uitgifte volgens FEFO en de kostprijs volgens FIFO berekend; het verbruik in het veld wordt aan het juiste lot en de juiste kostprijs gekoppeld.

  3. 3

    Migratie van de datalaag in productie

    Terwijl het systeem in gebruik was, zijn de ORM en de aanpak voor het GraphQL-schema vervangen; de schemadefinities staan nu in handgeschreven SDL-bestanden.

Technologieën

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

Gerelateerde diensten

Bouw je een vergelijkbaar systeem? Van de architectuur tot de livegang kunnen we samenwerken.

Neem contact op