Skip to content

Service 02

Custom Apex, custom components, custom everything.

Configuration runs out. When it does, the question is whether the code that replaces it is defensible six months later. Ours is, because 46% of it is tests.

Shape
Build engagement
Duration
6 to 16 weeks
Output
Source in your repo
Counted from source control in one org, not reported from memory
314Apex classes shipped170 production and 144 test, counted from source control rather than estimated.
79Lightning Web ComponentsHand-authored. The largest is a 3,225-line datatable used across the org.
19Visualforce PDF engines in productionDocument rendering, verified end to end against live records.
46%Of the Apex codebase is tests144 test classes against 170 production classes.

01Capability

What we build with

Six areas. The last one is not a technology, and it is the one that decides whether the other five survive contact with production.

  • 01

    Apex classes and triggers

    314 classes and 32 first-party triggers shipped in one org. Vendor triggers from a managed package stay out of source control, deliberately, so the count means what it says.

  • 02

    Lightning Web Components

    79 components, including a 3,225-line datatable and a scheduler that replaced a crew-staffing spreadsheet with in-cell typing. Data-dense surfaces, built for people who work in them all day.

  • 03

    Visualforce PDF engines

    19 in production. Documents that go to a customer have to be exact, and the invoicing path in a real org renders a PDF and flips a flag rather than writing to an invoice object. We hook the path users actually run.

  • 04

    Batch, queueable and scheduled

    Nightly queueable chains, batch geocoding, scheduled recomputes. Each one carries a heartbeat and a watchdog, because a job that stops silently is worse than a job that fails loudly.

  • 05

    Integrations through named credentials

    The key is a named credential password merged into a header. It never becomes an Apex value, so it cannot be logged, cannot land in an exception, and cannot be echoed back to a caller.

  • 06

    The platform limits

    The 120-second cumulative callout budget drives caller-supplied timeouts of 25, 45 and 60 seconds, never 120. Apex cannot sleep and cannot honour a retry-after. Knowing that before you build is the difference between a design and a rewrite.

02The record page

135 fields on one object, and the daily job still comes first.

A record page is an operational decision, not a cosmetic one. Tab order follows who opens the page and what they came to do.

  • 79 Lightning Web Components in production, including a 3,225-line datatable.
  • Sections and field sets driven by custom metadata, so the next change is a data row.
  • Every tile that shows money states the basis it was calculated on.
  • Checked on the phone as well as the laptop, signed in as the person who lives on this page.
Sales and Forecasting
Order00005967 — Riverside Tower, Level 3
ActivatedChange requests 2
Order detailsEdit
AccountNorthern Envelope Ltd
ProjectRiverside Tower
Order statusIn progress
Work orders14 of 18 closed
Progress basisInstalled, not invoiced
Tax treatmentGST / PST (12%)
Billing windowQ3 2026
Order end date14 Sep 2026

Contract value excludes tax. Amounts are as entered, in mixed currencies, and are not converted.

Work orders
Level 3 installComplete
Level 3 verificationComplete
Sensor commissioningScheduled
Open tasks
3 open, oldest 11 days
Depiction · An order record page carrying 135 custom fields, organised into tabs so the people who use it daily see their own work first.Contract value states its own basis. It excludes tax, and mixes two currencies as entered rather than converting them, so the tile says so instead of implying a single-currency total.
Contact us to find out more

Send us the build nobody wants to own.

46%Of the Apex codebase is tests144 test classes against 170 production classes, counted from source control.

03The board pattern · six operational surfaces

The work is in columns, not in a report

Staff stop opening a list view, filtering it, and holding the state in their head. One surface shows what is queued, what is moving and what is stuck, and moving a card is the status update. We have run the same pattern across task, work order, purchase order, order, dispatch and production records.

  • Drag between columns writes the status, so there is no second step to forget
  • A real Gantt view for the boards where sequence and duration are the whole problem
  • A mobile-safe path, because the desktop table component does not render in the mobile app
  • Card contents driven by custom metadata, so a new column is a data row
  • Built once and reused across six record types rather than rewritten per object
Depiction · The board pattern as it is arranged, with the Gantt strip under it. Column counts and card widths are synthetic.

04One surface, not five reports

Counting stock is one screen, and it will not save without a reason.

Five reports and a spreadsheet is how a discrepancy becomes permanent. One component holds the count, the bulk edit, the spot check, the history and the audit log.

  • Adjustments require a reason, so the audit log is still worth reading a year later.
  • Column and card contents come from custom metadata rather than a deploy.
  • A mobile-safe path is built alongside it, because the desktop table component does not render in the Salesforce mobile app.
  • Already carrying 2,435 inventory items and the movements behind them.
Sales and Forecasting
CountProductsBulk editSpot checkHistoryAudit log

Start a physical inventory count

412 products selected. Only ticked items on the Products tab are pulled in.

Start count
Depiction · A physical stock count hub: count, bulk edit, spot check, history and a full audit log, built as one component instead of five reports.Every adjustment requires a reason before it will save. An unexplained stock correction is how a discrepancy becomes permanent, so the field is mandatory rather than encouraged.

05A worked example

The tax engine

A configuration-driven calculation engine with a shared rule source and regression checks.

  1. 01

    Trace the calculation

    Identify the formulas, flows and Apex paths that participate in a calculation. Document their dependencies before changing them.

    System map
  2. 02

    Use shared configuration

    Formula fields can reference custom metadata. Store province and tax-class rules with effective dates so changes remain reviewable.

    Custom metadata
  3. 03

    Verify before rollout

    Compare outputs before and after each deployment. Keep client records and financial findings within the authorised environment.

    Regression checks

Ask what your hardest screen would actually cost.

Next step

Bring us the build nobody wants to own.

Send the object, screen or integration that keeps causing trouble. We will review the fit and propose a scoped diagnostic or repair.

  • Free fit conversation
  • Source ships in your repository