iKonekt
Open di console

For groups and plenty brands

Plenty companies, one install, no shared customers

Groups usually solve dis one twice bad: either five separate installs and five separate everything, or one install and solemn promise say the application go always filter correct. The first one expensive. The second one na promise, and promise no be security model.

If you dey run more than one company — holding wey get subsidiaries, franchise, two brands wey dey target different market, agency and di thing wey di agency spin out — you don already know how di problem be. Di brands dey share people, tools and finance department. Dem no dey share customers, and e must not look like say dem dey share.

iKonekt dey run all of dem from one install, and di separation between dem na di database dey keep am, no be di code. Dat distinction sound like book talk until di day e no be so again.

Why di layer matter

Filter wey dey application level na just one sentence inside query. E go work as long as every query wey go ever be written carry am — including di one wey dem write in hurry, di one wey di new developer write, and di one wey dem write for report wey dem go use only once.

Push di boundary enter di database and di arithmetic turn upside down. Di policy dey run on every read and every write, under everything. Query wey forget di company no go return wrong rows; e go return nothing. Di failure mode go turn empty screen and confused developer, and na dat one be di correct failure mode.

Empty screen na feature. We go rather explain empty screen to our own engineer than explain customer list to two clients wey no expect to meet each other.

One installPer company
  • 1Customers & threadsScoped. Seller wey dey brand A no fit reach brand B own, na by construction, no be by configuration.
  • 2Claims on one customer"We already get dis account" na lock wey each company dey hold — so two brands fit both work di same market without colliding.
  • 3Prompts & settingsEach company dey edit dia own. Di one place wey dem ever share am na bug, and na di bug wey dis system proud pass to don find.
  • 4Partner programmesModule per company, no be global one wey everybody go inherit.

Boundary wey dem enforce below di application

Wetin one group actually fit share

Separation no be isolation just to do am. Di things wey worth am to share across group na di ones dem share deliberately, and na mostly di boring ones — and na exactly correct, because na di boring ones di duplicated cost dey live:

  • One install to ron and opdet. One diploymen, one set of kredenshal to luk afta, one tin to kip pach.
  • One team of people, wearing different hats. One person fit work for more than one company; wetin dem no fit do na to see both at once through query wey forget to ask.
  • One set of habits. Di way dem dey assign lead, di way dem dey write note, di way job reach invoice — learn am once, apply am everywhere, and e go shorten onboarding to like one morning.
  • One relationship with di rest of di family. castomAPI underneath, di same account, di same connectors — configure am per company where e matter.

Di question wey group always ask second

"We fit report across all of dem?" Yes — from di group own vantage point, deliberately and explicitly, no be as side effect of boundary wey dey leak. Di distinction na di whole design: to cross di line must be act wey somebody do on purpose, with di authority to do am. E must never be something wey stray identifier fit do by accident.

And di question wey dem ask third: "wetin go happen if we sell one of di brands?" Boundary wey di database keep na boundary wey you fit lift clean copy comot from. Dat one no be coincidence — separation and portability na di same property wey you dey view from two different meetings.

Under di floor

Wetin dey hold di line, specifically

No be claim, na list. If supplier no fit produce dis list about dia own product, dat one worth am to notice.

26

Tables wey dey carry dia company, with di check forced on, no be just available.

72

Policies, wey dem write out one by one so dat person don read each one, no be generate am in loop.

942

Tests, wey dem run against database wey dem rebuild from zero every time anything change.

0

Default companies. Request wey no get scope go throw before e reach di data — no fallback dey to forget to disable.

How dem build di separation →

“Faiv kompini dem, faiv install dem, faiv invoys dem from yu.”

One install. Five boundaries wey di database dey keep.

Shared people, shared habits, shared platform — and no be even one shared customer. To cross dat line must be something wey person do on purpose, never something wey identifier manage do by accident.

How dem build di separation →