Two products, two licences,
a single foundation

I don't resell anything. I write and publish the tools I was missing in the field: an open-source mapping library, and the suite of Odoo modules that brings it into the ERP. The second is built on the first — which is why they hold together.

01 · In production

GeoLeaf JS

A field mapping client, built on MapLibre GL JS 6.

It is not a general-purpose GIS library, and it does not try to replace one. It is a mapping application you view and edit on a phone or tablet, with or without a network — and one that is defined by a JSON profile rather than by code.

Profiles
One JSON file defines the entire application: layers, styles, taxonomy, panels, filters. Changing the use case means changing the profile, not recompiling.
Offline
Edits made without coverage are stored locally, queued, then replayed idempotently — an interrupted synchronisation does not create duplicates. Data and basemaps are declared in advance and downloaded before the round. Mobile coverage often stops where the equipment starts.
Size budget
What the page loads at startup is measured and capped. A capability that is left out is not deferred: it is not in the file.
Formats read
GeoJSON · WKT · MVT / PMTiles · OGC API Features · WMTS / WMS · FlatGeobuf · COG · GPX · KML / KMZ · CSV · TopoJSON

02 · In progress

GeoLeaf Suite

The map goes inside the Odoo backend, not next to it.

Fifteen standard Odoo 19 add-ons — no fork of the core, no modification to Odoo. Every geolocated business record becomes viewable and editable on a map, from within the ERP. Maintenance management (CMMS) is the flagship product: equipment, interventions, public reporting, inspection rounds.

The core
Geospatial models and a reusable mixin, taxonomy, a registry of publishers that normalises any Odoo record into a geographic object, a REST API, four authentication methods, a call log purged after ninety days.
The CMMS
Equipment installation with stock movement and lot number, intervention log, maintenance due dates and life-cycle status, access rights by geographic area, citizen reporting, inspection rounds.
Modular
A vertical layer never works its way back into the generic layer: the CMMS names no particular trade. So a maintenance contractor does not install what does not concern them.
Odoo edition
Designed for Odoo 19 Enterprise, whose Field Service app it uses. A derived variant runs on Community, without Field Service, and is therefore less complete. A SaaS CMMS, built on Community, is under development.
PostGIS
Optional. The core runs without it, and that is the default installation mode. PostGIS is only added for the spatial operations that genuinely require it. It is this constraint that makes the modules installable on hosting I do not control.

State of play, unembellished

The suite is not yet published on the Odoo Apps Store, and has no public pricing. The demo, on the other hand, does exist: it runs on a test instance with a sample asset base and the full intervention cycle. Ask for access — I issue it in your name, with a slot to walk through the demo together.

03 · Architecture

How they fit together

Each layer knows only the one directly beneath it. The connector carries no business logic, only transport and security. The publishers handle neither transport nor security.

  1. MIT licence

    GeoLeaf JS

    Rendering, profiles, the offline cycle. In the browser.

  2. OPL-1 licence

    Connector

    GeoJSON REST API. Transport and security, nothing else.

  3. OPL-1 licence

    Publishers

    Normalise any Odoo record into a geographic object.

  4. Standard Odoo

    Your business objects

    Equipment, interventions, stock, invoices. Right where they already are.

Why two licences

The library is open source and will stay that way: it is of use to everyone, including people I will never meet. The Odoo modules are a paid product, because they encapsulate business know-how and are maintained version after version. Nothing that is open source ever becomes paid.

What this means for you

Your technical contact is the person who wrote the code. No ticket working its way up a chain, no vendor roadmap to wait for. And if you take back control, the mapping layer is under MIT: you keep it.

Questions

What people ask me about the products

No, and it does not try to. It is not a general-purpose GIS library: it is a field client, built for viewing and editing data on a phone or tablet, with or without a network. To produce an atlas, realign coordinate systems or carry out spatial analysis, you need QGIS and PostGIS — and that is the other half of my work.
The library is of use to everyone, including people I will never meet. It stays under the MIT licence, and nothing that is open source ever becomes paid. The Odoo modules, for their part, encapsulate business know-how and are maintained over time, Odoo version after Odoo version: that is a product, and it is paid for.
No. The core runs on PostgreSQL alone, and that is the default installation mode. PostGIS is only added for the spatial operations that genuinely require it, such as a spatial index on a large asset base. It is this constraint that makes it possible to install the modules on hosting I do not control.
The mapping layer is under the MIT licence: you keep it, along with its public source code and documentation. The Odoo modules are delivered as readable source code, like any Odoo add-on — nothing is encrypted or obfuscated. The instance remains yours, and another integrator can take over.
Yes, and for now it is the only way: the suite is not yet on the Odoo Apps Store. A test instance runs with a sample asset base and the full intervention cycle. I give named access on request, with a slot to walk through it together if you wish.

Want to see it running?

Tell me what you manage and roughly how many pieces of equipment. I send named access to the demo instance, with a slot to walk through it together.

Request access →