Back to portfolio
001Nursery & Landscaping Operation · Client

DIAPLANT

Diaplant grows mature specimen trees and delivers landscaping projects from Amarante, Portugal. The company ran on Sage 2012, a 44-column spreadsheet and paper: quotes took hours, stock lived in Excel and in people’s heads, and job status travelled by phone. We replaced all of it with one internal platform, a public site that mirrors it, and a client portal.

Django 5.1 · Python 3.12PostgreSQL 16 + PostGISNext.js 16 · React 19MoloniON (AT / SAF-T)Hetzner · Docker · Caddy
002The Platform

One source of truth, two front doors

The CRM holds the catalogue, the availability and the editorial copy. The public site and the client portal both read it over a signed API — neither keeps a database of its own.

diaplant.pt
Diaplant public site, served from the CRM
Capability 01

One platform, seventeen modules

Leads, opportunities and Kanban pipelines split by nursery, landscaping and export; quotes, inventory, documents, calendar, reporting, notifications and a knowledge base — in one place, with an append-only audit log.

Capability 02

From quote to certified invoice

A quote configurator feeds MoloniON directly, so an approved quote becomes an AT-certified invoice, delivery note or receipt without anyone retyping it.

Capability 03

Inventory that became a system

Species, lots and specimens with QR codes, per-segment pricing, reservations, a photo bank, a map and a SharePoint sync — in place of a 329-row, 44-column availability spreadsheet.

Capability 04

A public site that mirrors the CRM

diaplant.pt runs on Next.js with no database of its own: catalogue, availability and editorial copy all come from the CRM over a signed API. One source of truth, and the mirror is additive — it never overwrites curated content.

Capability 05

Each client sees their own price

Seven client types — from private buyers to municipalities and premium garden centres — map to commercial segments. A logged-in client sees their tier price plus their own quotes, orders and documents.

Capability 06

Roles written down for the first time

A permission matrix across 18 modules and 8 profiles for a nine-person, eight-department company — including the rule they asked for themselves: whoever writes a quote is not the one who approves it.

004Still running the operation on spreadsheets?

Still running the operation on spreadsheets?

That is where Diaplant started. See the result in production.