Custom software for growing businesses

Software that fits the way you work.

CoderCraft designs and builds the systems businesses run on every day — web, desktop and mobile. We can run and host the finished product for you, or hand it to your own development team.

Building custom software since 2003 · Web, desktop & mobile · Hosted by us or run by your team

Why custom wins

Software shaped to your work. Not the other way around.

Every workaround, every side spreadsheet, every “we just handle that manually” is the gap between the software you bought and the business you actually run. Closing that gap usually costs less than the licenses and lost hours you already pay for.

What you get

A system built around your process instead of a configuration of somebody else's. It works the way your team already describes the job, so getting people on it is a conversation rather than a training course.

What it costs

One scope and one number, settled before the work starts — and no per-seat licence that grows every time you hire. From there it is your call: an annual fee where we host, run and keep improving it, or a handover to your own developers.

Where custom pays for itself

Problems worth building for

No two systems we build look alike. These are the problems clients hire us for most often — a project might involve one of them or several. Which ones apply to yours is part of the conversation before anything gets built.

The process that sets you apart

The thing your business does better than anyone else is the exact thing no packaged product supports. So it ends up in spreadsheets, email and somebody's head.

Custom earns its keep precisely where the work is yours — the pricing rule nobody else uses, the approval path your customers count on, the check that keeps your quality where it is. That belongs inside the system rather than in a spreadsheet beside it, and the roadmap follows your priorities instead of a vendor's vote count.
Built around your processNo workaroundsYour roadmap

The platform that fits the work

Not every system needs a phone app, and not every job gets done at a desk. The platform should follow the work rather than a template.

We build for the browser, the Windows desktop and native mobile — whichever one the job actually calls for. Sometimes that is a single platform. Sometimes a pairing does what neither could alone: a phone that captures the work in the field feeding the web app the office reviews it in. Where two platforms earn their place, they are built as one product — sharing what can sensibly be shared, going native where the device demands it — so your team moves between them without relearning anything. They can also stay in step in real time: a publish-and-subscribe channel pushes each change out the moment it is made, so a photo taken in the field appears on the office screen without anyone refreshing a page or waiting on a sync.
WebWindows desktopNative mobile

The back office nobody wants to buy twice

Permissions, history and reporting are what make a system trustworthy — and what packaged tools charge extra for.

Access scoped per role, and per user, a complete history of who changed what, and reports built into the system that are up to date every time you open them — rather than someone rebuilding the same spreadsheet at the end of every month. And for the people who need the numbers without logging in, reports can go out on a schedule as PDF, Excel or CSV, to whoever should get them.
Role-based accessReporting built inScheduled deliveryFull audit trail

Systems that talk to each other

The most expensive work in a lot of businesses is a person retyping what another system already knows.

An API turns your system into something other software can work with — your accounting package, a supplier's portal, a customer's own system, or whatever tool you buy next. Partners and larger customers can pull what they need on their own schedule instead of emailing your staff for it, and access is granted per client and logged, so you can see exactly who took what and switch it off without touching the code. Webhooks make the connection immediate in both directions: your system can announce that an order shipped or a payment cleared the moment it happens, and act on the same kind of message arriving from someone else — instead of everyone waiting on an overnight batch.
IntegrationsWebhooksPartner and customer accessNo more re-keying

One record instead of five copies

Data arrives from a vendor feed, a spreadsheet, an old system nobody wants to touch — and every source spells the same customer a different way.

We build the intake that pulls data in on a schedule — from an outside system, a third-party provider, or two of your own systems that were never designed to speak to each other. Arriving records are then matched against what you already have on the values that identify them, such as an account number, an email address or a member ID, so a new arrival updates the existing record and fills in what was missing rather than creating a second copy of the same person. What used to be an afternoon of comparing spreadsheets happens overnight instead, with anything ambiguous set aside for someone to look at. The same matching can also sit behind a screen your own staff use — upload a file, see what matched, what is new and what needs a decision, then approve the merge — so a one-off list from a conference or a new partner never has to wait on a developer.
Automated intakeRecord matchingNo duplicates

A product of your own

Some clients do not want a tool for the business — they want the business to be the tool: a subscription product with customers of its own.

Sign-up, billing, keeping every subscriber's data walled off from every other, and reporting on who actually uses what — the unglamorous half of a software product, and the half that has to be designed in from the first day rather than bolted on. It is the same groundwork behind our own subscription products, so it is built, not theorized.
Subscription billingSubscriber managementUsage reporting

Security

The part nobody asks about until it matters

Some of this we build in by default. The rest we recommend based on what your system holds and who touches it — and we will tell you plainly which is which.

Single sign-on

Staff can use the accounts they already have — Microsoft Entra, Google Workspace or another provider — so there is no extra password, and access ends the day their employment does.

Two-factor where it counts

A second step at sign-in for administrators, and for anyone whose account can reach personal or financial records.

Access scoped by role

People get what their role requires and nothing more, narrowed further per person where the work calls for it.

Passwords kept out of the code

Keys and connection details live in an encrypted vault, not in a settings file that can be copied or emailed.

A record of who did what

Changes are logged with the person and the time behind them, so a question about a record has an answer.

Public forms that resist bots

Anything open to the internet is checked and rate-limited, because a contact form is the first thing anyone probes.

Least privilege in the database

The application account can read and write the data it needs and nothing more — it cannot alter the database itself.

Deletes you can take back

Removed records sit recoverable for a grace period before anything is destroyed for good.

Start here

Bring us the problem. Not the specification.

Some people arrive with a detailed spec. Most arrive with a pain point — the process that eats a day every week, the report nobody trusts, the two systems that will not talk to each other. Either is a fine place to start. In more than twenty years we have met very few problems that could not be solved with enough time and effort; the useful conversation is about which ones are worth solving first, and what that costs.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.