Skip to content
Appliconet

Work

Systems that had to work on Monday morning.

A selection of engagements. Client names are withheld where the work is under agreement — details on request, and references available for serious enquiries.

2025—2026B2B distribution platformWholesale & distribution

A multi-tenant ordering platform, built with AI in months not years

The problem
A distributor needed to serve many customer organisations from one platform — each with their own users, branches, catalogues and pricing — while a single person might legitimately hold different roles in two different accounts. Orders were arriving by phone and email and being re-keyed by hand.
The approach
A layered .NET application behind a Next.js front end. Tenant isolation is enforced at the data layer by global query filters rather than by developer discipline, so a forgotten WHERE clause cannot leak another customer's data. Login resolves the tenant from the subdomain, which avoids revealing which accounts a given email belongs to. Platform administrators can enter any account for support, but the issued token is deliberately downgraded to read-only — support can see everything and change nothing.
The outcome
Order entry moved to self-service, re-keying errors disappeared, and onboarding a new customer organisation became a configuration screen rather than a two-week project. Delivered by one engineer with AI-assisted implementation and a written design record for every major decision.

Engineering highlights

  • Tenant isolation via EF Core global query filters
  • Subdomain tenant resolution with multi-account identity handling
  • Read-only platform-admin impersonation with full audit trail
  • Account suspension with automatic expiry and audit logging
  • Passwordless login via time-limited one-time codes
  • Bulk CSV user import with row-level validation and collision detection

Stack

.NETEntity Framework CoreAzure SQLNext.jsReactTypeScriptTailwind CSS
2025—2026Platform operations teamSoftware

An operations console the support team stopped dreading

The problem
Support staff needed a developer to answer routine customer questions, and every internal screen behaved differently from the last — so every new hire learned six interfaces instead of one.
The approach
A single admin console built to one documented table standard: cumulative multi-column sorting with priority indicators, per-column filters in the Excel idiom, CSV export and a consistent detail panel on every list. Behind it, user administration across accounts — enable and disable, unlock, reset passwords — with every administrative action written to an audit log.
The outcome
Routine support requests stopped reaching engineering, and a new support hire became productive in a day rather than a fortnight. The table standard is now a written convention that every future screen follows.

Engineering highlights

  • One documented table pattern reused across every list screen
  • Cumulative multi-column sort with visible priority badges
  • Per-column filtering with active-filter indicators
  • Cross-account user administration with audit logging
  • Slide-in detail panels consistent across entities

Stack

Next.jsReactTypeScriptTailwind CSSshadcn/ui
2026Existing production systemModernisation

From secrets-in-config to a tested, hardened deployment

The problem
A live application kept its database connection string and signing key in a configuration file committed to source control, had no automated tests, and had no check preventing a deactivated customer's users from continuing to log in.
The approach
Secrets were moved out of configuration into managed secret storage. Unit and integration test projects were introduced with a test host and authentication helpers, so behaviour could be verified end to end rather than by hand. Tenant status checks — deleted, inactive, suspended — were added to the login path, with suspensions that lift themselves automatically on expiry and write an audit entry when they do.
The outcome
The system moved from unverifiable to tested, and a whole class of access-control bug became impossible to reintroduce silently. The work was done incrementally against a running production system with no cutover weekend.

Engineering highlights

  • Secrets removed from source control into managed storage
  • Unit and integration test infrastructure introduced from zero
  • Tenant status enforcement added to the authentication path
  • Self-expiring account suspension with audit trail
  • Controllers refactored to a service layer for testability

Stack

.NETxUnitIntegration test hostEntity Framework CoreAzure SQL

Sectors served

References available on request.

Where an engagement is under agreement the client is not named here. For a serious enquiry I will happily put you in touch.

  • Wholesale & distribution
  • B2B commerce
  • Professional services
  • Manufacturing
  • SaaS operators
  • Logistics

Next step

Most engagements start with a 30-minute call.

No pitch deck and no discovery invoice. We talk about what you're running, what hurts, and whether I'm the right person to fix it.