Skip to content

EXTENSIBILITY

Customise it deeply. Never fork it.

Every extension point in Quarkino is a registry — a formal, designed place to add something. Your client's peculiar requirement becomes a new definition, not a modified core file. Which is why next year's security fix still reaches this project.

your definitionregistrya socket, not a surgeryQuarkino Corenot one file editedso next year's security fix still applies cleanly

You already know how this goes.

Client A needs a discount rule nobody anticipated. So you edit the pricing code. Client B needs a different one, so you branch. Six months later there are four branches, a bug fix has to be applied four times, and applying it to the third one causes a merge conflict in a file that has drifted beyond recognition.

Eventually the honest answer to “can we upgrade?” becomes “not really.” That's the moment a platform stops being an asset.

THE CORE YOU STARTED WITHclient Aclient Bclient Cclient D — unmergeable
Each branch leaves at a slightly different angle, and the distance between them is the distance a fix has to travel four times.

One pattern, used everywhere.

Learn it once and every extension point in the system is already familiar.

Throughout Quarkino, the same shape repeats. Anything meant to be extended — a field type, a payment gateway, a discount rule, a dashboard widget, a report — is defined in a registry rather than hardcoded.

Adding a capability means registering one new definition. Not editing several core files, not touching anything another project depends on.

And every registry validates itself at startup. A duplicate key, an invalid dependency, or a circular dependency is caught the moment the system boots — not in production, after real damage.

The formal extension points.

Ten places designed to be added to. Adding to any of them is a definition, never a patch.

Field types

Introduce a new kind of input for content, forms, and spec sheets — one registry serves all three.

Content features

Each content capability is self-contained — its own editor form, settings, save logic, and API resources.

Discount rules

Express a coupon condition nobody built for. Rules compose.

Shipping rate rules

Price delivery by whatever this business actually charges on.

Payment gateways

Add the provider this market uses.

Notification channels

Deliver through a channel we haven't implemented.

Dashboard widgets

Put the number this client cares about on their home screen.

Reports

Define an analysis as data rather than as code.

Bulk actions & admin search

Extend what operators can do to many records at once.

Importers & exporters

Handle the file format this industry sends you.

Why it matters in year two.

The core stays clean

One client's specifics never enter shared code. There is no file in Quarkino that gradually becomes a graveyard of special cases with a comment nobody dares delete.

Improvements reach everything

A bug fix, a new feature, or a security upgrade in the core propagates to every project you've built on it — without a painful merge, because nothing diverged.

Nothing is capped by our imagination

Your project isn't limited to what we anticipated. Deep customisation is available through the front door instead of by going around the building.

The team never has to choose between “keep the core clean” and “meet this client's requirement.” Both, at once, is the whole design.

What “adding a discount rule” actually looks like.

The same requirement, met two ways. The difference is not the first step — it's the last one.

Forking a platform

  1. 01Edit core pricing logic
  2. 02Branch per client
  3. 03Fix each bug four times
  4. 04Merge conflicts on every upgrade
  5. 05“We can't upgrade”

The path stops here.

Registering with Quarkino

  1. 01Write one rule definition
  2. 02Register it
  3. 03Startup validates it
  4. 04Core untouched
  5. 05Upgrade normally, forever

And it keeps going.

Bring us the requirement that broke your last platform.

We'll tell you which registry it belongs in — or be honest if it doesn't fit.

  • We reply within one working day
  • No sales sequence, no drip campaign
  • NDA before the call if you'd prefer