Skip to main content

Custom application development

Web, mobile and desktop software, secure from the start

Security added at the end of a project is expensive, incomplete and usually architectural. We design and build custom web, mobile and desktop applications where authorisation, data handling and trust boundaries are decided at the same time as the features that depend on them.

Why it matters

The costly flaws are design decisions, not typos

In the applications we test, the findings that lead to real exposure are rarely exotic. They are tenancy boundaries that were never enforced at the data layer, permission checks placed at the route rather than the record, and workflows that can be driven out of order.

Those are architecture decisions. By the time a penetration test finds them, changing them means touching everything built on top. Deciding them correctly during design costs a fraction as much, which is why threat modelling sits in our build process rather than after it.

Built into every project

  • Threat model produced during architecture, not after launch
  • Authorisation enforced server-side at every entry point
  • Parameterised data access with no string-built queries
  • Strict server-side validation regardless of client-side checks
  • Secrets held in the environment, never in the codebase
  • Security headers, secure cookies and enforced TLS by default
  • Dependency review and a documented patching path
  • Audit logging of security-relevant actions

Secure development lifecycle

Ten phases from discovery to maintenance

Security is not a stage in this list. It runs through all of them. Each phase has a security activity attached to it, and each one produces something you keep.

  1. Discovery

    Business goals, users, constraints and existing systems. We establish what success looks like before proposing an architecture.

  2. Requirements

    Functional requirements alongside security requirements: data classification, roles and permissions, compliance obligations, auditability and retention.

  3. Architecture & threat modelling

    System design, data flows and trust boundaries, with threat modelling carried out at the same time so controls are designed in rather than retrofitted.

  4. UI implementation

    Accessible, responsive interfaces built on semantic HTML with progressive enhancement, fast on real devices and usable by keyboard and assistive technology.

  5. Backend development

    Application and domain logic with parameterised data access, strict server-side validation, enforced authorisation at every entry point and structured audit logging.

  6. API development

    Versioned, documented APIs with authentication, object-level authorisation, rate limiting, schema validation and predictable error handling.

  7. Security review

    Code review against the threat model, dependency and secrets review, configuration hardening and verification of security headers and transport settings.

  8. Testing

    Automated unit and integration tests covering authorisation and validation paths, plus targeted security testing before release.

  9. Deployment

    Repeatable deployments, environment-separated configuration, secrets held outside the codebase, TLS enforced and least-privilege access to infrastructure.

  10. Maintenance

    Dependency and patch management, monitoring and logging review, and periodic reassessment as the application and its threat landscape change.

How we work

Delivery you can take over

You should not need us to keep running what we built. Every project is handed over with source code, documented architecture, automated tests and a deployment runbook.

We work in short increments with a review at the end of each one, so you see working software early and priorities can change without renegotiating the whole engagement. Where an existing system is involved, we assess it first and improve it incrementally. A rewrite is a last resort, not an opening proposal.

Documented

Architecture, data model and deployment steps written down and kept current.

Tested

Automated coverage of authorisation, validation and the critical business paths.

Portable

Environment-based configuration and repeatable deployments with no machine-specific setup.

Yours

Source code and full version history transferred to your organisation.

Have a project in mind?

Tell us what you are building and what it has to protect. We will come back with an approach, a shape and an honest estimate.