Selected work

    Flagship

    MapMyMine

    Lead Technical Consultant & Full-Stack Engineer

    Production · Australian mining organisations · 08/2025 – present

    A mining rehabilitation and operational intelligence platform. I am the primary technical person on the estate: spatial model, NestJS API, both Angular applications, the Python services, enterprise authentication and infrastructure, across a multi-repository system.

    mapmymine.com(opens in new tab)
    MapMyMine SPoT map with aerial imagery, mining lease, disturbance polygons and an MGA grid overlay
    SPoT map on an example project (Pluto Mine). Aerial imagery, mining lease, disturbance polygons and an MGA grid: the layer stack a rehabilitation planner actually works in. Tap or click to open full size.

    The problem

    Queensland has required a Progressive Rehabilitation and Closure Plan for resource activities since November 2019, and a site has to keep a defensible record of disturbance and rehabilitation against the granted schedule. The source material is a mix of survey shapefiles, aerial rasters, coded activity dictionaries and the schedule itself: a final site design, post-mining land uses, non-use management areas, and a table of time-based milestones. The obligations are spatial. The artefact carrying them is prose.

    That same spatial truth then has to satisfy several separate regulatory processes, each with its own approved form and schema: the annual return, estimated rehabilitation cost, the plan of operations, and the PRCP. Disturbance and rehabilitation polygons are submitted as shapefiles conforming to the department’s master schema, with mandatory coded fields and a prescribed naming convention. The annual return asks for lifetime totals, the current twelve months, and the twelve months proposed next, so last year’s position has to still be reproducible this year.

    Those pieces do not compose themselves into something a site can tick, report or audit. MapMyMine’s job is to make one spatial record, Single Point of Truth (SPoT), and hang the compliance workflow off it. The organisation is the identity and SSO boundary; the project is the GIS and compliance tenant.

    Architecture

    Angular user applicationAngular administration applicationNestJS APIPostgreSQL + PostGISPython microservicesRaster conversion pipeline

    Spatial system

    Custom OpenLayers tooling rather than a wrapped GIS widget: lazy-loaded map layers, coordinate reference handling the user confirms before ingest instead of a silent guess, geometry operations carried out in projected metres, and a dissolve that keeps actual and proposed disturbance separable. ECW and TIFF survey rasters are converted and served as map tilesets.

    Disturbance dashboard showing site summary figures, a map of disturbance status, and rehabilitation milestone gauges
    Disturbance dashboard on a locked SPoT version: site totals, disturbance status on the map, and rehabilitation milestone progress by rehab area. Tap or click to open full size.
    Exported disturbance geometry over aerial imagery with a coded attribute table
    Export of coded disturbance geometry. The map and the attribute table are the same features: permit, activity, domain and rehab codes travel with the polygons. Tap or click to open full size.

    Getting survey data into coded form

    Survey and contractor data arrives labelled in its own language, not in the coded fields a submission requires. The platform proposes the right codes from the project dictionary and puts them in front of a reviewer. Matches are suggestions: a person confirms or overrides each one before anything is written to the spatial record.

    Ingest review screen pairing source data labels with proposed activity codes
    Ingest review. Each row pairs a source label with a proposed code and a target the reviewer can still change, rather than a silent write. Tap or click to open full size.

    Turning the approved plan into measurable criteria

    A site’s obligations are granted as a document, but a site can only be measured against structured data. The platform carries that translation, and correctness governs the design: legal wording is preserved exactly as written, nothing is invented to fill a gap, and a person has to accept the result before it can seed compliance data.

    Rehabilitation milestone criteria review screen, with RM1 expanded
    Criteria review. The approved wording is accepted as read and cannot be edited here, and nothing downstream opens against it until that acceptance is recorded. Tap or click to open full size.

    Enterprise identity

    Microsoft Entra workforce tenants, via OIDC authorisation code with PKCE. An organisation can use the platform-managed registration or bring its own. Work-email domains are claimed and proven before single sign-on can be enforced, and SCIM 2.0 handles user provisioning. Secrets and provisioning tokens are never displayed twice.

    Organisation SSO settings for Microsoft Entra, including domain claim and managed or customer app registration
    Organisation SSO. Domain claim, managed Entra connect, or a customer-managed app registration. Force SSO stays off until a domain is proven and a federated login has succeeded. Tap or click to open full size.

    What it changes

    Done conventionally, this is desktop work: CAD and GIS packages, a cartographer, and a set of deliverables assembled again for each submission and each site. The product owner spent three decades doing exactly that for Queensland mines, which is why the domain model is organised around the submission a site is assessed on rather than around a generic map.

    It is in production with Australian mining organisations, and work that used to be assembled by hand for each submission now runs inside one system. I would not put a figure on the time that saves, but it is substantial.

    Engineering I am responsible for

    • PostGIS spatial modelling and geometry operations
    • OpenLayers map interaction and layer pipelines
    • Versioned spatial records and geospatial export
    • Spatial data ingest and validation
    • Document-to-data extraction with human review gates
    • Reporting and export pipelines
    • Microsoft Entra OIDC, domain verification and SCIM
    • Raster conversion and tile delivery
    • NestJS API, both Angular apps, infrastructure

    Stack

    AngularNestJSOpenLayersPostgreSQLPostGISPythonFastAPILLM integrationMicrosoft EntraMapboxGeoJSON

    Work with me →