Relational backend systems

Secure, multi-tenant relational APIs — designed, built and operated for you.

We build APIs for systems shaped by relational data, with permissions, auditing and event publishing built in from the first request — one permission model across all three. The common backend is delivered quickly, so engineering effort goes where it actually counts: the rules that make your system different.

Your system runs in your own cloud account. We can operate and maintain it for you, or hand it over to your team.

What we build

A working API surface early, customised where it matters

In most relational systems the majority of routes do the same handful of things. We start from a proven backend framework that already handles those patterns, then concentrate effort on the behaviour that is specific to your business.

Get the common API surface running early

Create, read, update, archive, search, check access, record an audit trail, publish an event, return a consistent response — most routes are variations on these. Rather than rebuild that infrastructure route by route, we describe your data model, operations, relationships and access rules to the framework and generate it. You get a working, consistent foundation early, without locking out the customisation that comes next.

Custom where it matters

Standardised does not mean inflexible. The framework handles the common lifecycle consistently while providing clear extension points for customer-specific behaviour — some included as standard configuration, some quoted as custom work (see pricing):

  • Hide fields from particular users or applications
  • Make fields read-only
  • Apply additional validation to create or update operations
  • Calculate values from related records
  • Restrict access through tenant or organisational relationships
  • Run custom business logic before or after an operation
  • Add specialised searches or custom operations
  • Change the event payload available to an integration partner

Security built into the request lifecycle

Access control should not depend on every developer remembering every check. Tenant isolation is derived from how your data relates, so it is applied the same way on every route rather than re-checked by hand. The same permission model then determines what a user or integration may read, change and receive:

  • Route and operation-specific permissions
  • Tenant isolation and record-level access
  • Access through related relational data
  • Human and machine identity checks
  • Field visibility
  • Event topic and payload permissions

Auditing built in

Important operations should leave a reliable history. Because auditing is part of the framework lifecycle, it does not need to be reimplemented for every endpoint:

  • Who or what performed the operation
  • Which tenant and record were affected
  • What operation occurred, and when
  • Relevant request and change information
  • Whether the actor was a human or machine identity
  • The result of the operation

Built for integration partners

Events are part of the framework, not an afterthought. Your system publishes business events from day one, to topics that are permissioned resources under the same model as your API — so what a user or integration partner may see through the API is what they may see through your events. A delivery connector hands those events to your platform — your Kafka, Amazon SNS or EventBridge — from where onward access is governed by your platform and shared with partners.

Integrations can also map their own IDs onto your records — namespaced and tenant-scoped — so third-party systems stay in sync without custom plumbing.

Documentation that stays accurate

API documentation is generated from the same definitions that run the API, so it can’t drift from the real behaviour. It is permission-aware: each consumer sees documentation for exactly the routes they are allowed to call — which makes onboarding your frontend team and your partners’ integration engineers faster and less error-prone.

Grows with your business

Your system always defines and enforces its own permissions. Sign-in can come from your existing identity provider, and permission assignment — who holds which permission, in which part of your organisation — can be delivered with the system or driven from a system you already run. Identity and permissions are a pluggable seam, so moving between those arrangements later is configuration rather than a rewrite.

A strong fit for relational systems

We are particularly well suited to software built around connected business data, where entities relate to one another:

Organisation
  └─ Location
       └─ Department
            └─ Employee
                 └─ Timesheet
                      └─ Invoice

These relationships often determine who owns a record, which tenant it belongs to, who may view or change it, which records appear in a search, and which events an integration partner may receive. Rather than reducing the system to disconnected endpoints, we design the API around those relationships.

Why us

Why our approach is faster

Traditional API projects rebuild the same foundations every time — routing, validation, search, pagination, permissions, tenant checks, auditing, event publishing, documentation and error handling. We start with those already integrated. That doesn’t remove the need for careful modelling or custom engineering; it concentrates the effort where it creates value: your business logic, unusual access rules, specialised operations and integrations.

A specialist backend partner for relational products

Our approach fits best when your product is built on a relational database, most routes follow repeatable business-data patterns, and you need a usable API surface quickly — but still need real customisation, consistent tenant isolation, auditing and secure event publishing for customers or partners. It suits teams who already have frontend, mobile or product capability and want the backend built and operated for them.

Deployment

How delivery works, and where it runs

A clear path from modelling your business to a running, operated system.

  1. Model the business

    We identify the entities, relationships, tenants, users, operations and access rules.

  2. Deliver the common API surface

    We configure and generate the standard routes, validation, permissions, auditing and events supported by the framework.

  3. Add business-specific behaviour

    We implement the custom rules, calculations, workflows, integrations and operations unique to your system.

  4. Test the complete lifecycle

    We verify validation, permissions, data access, auditing, event publication and API documentation consistently across the system.

  5. Deploy and operate it

    Your system is deployed into a dedicated AWS sub-account we set up in your own organisation, so everything we do is logged in your CloudTrail, in your account. We can continue to operate and evolve it for you, or hand it over to your team.

Pricing

The Core Package — a complete, production-ready API

Most engagements start with the Core Package: a secure, multi-tenant API designed around your data and deployed to production in your own AWS account. One fixed price covers systems of up to 15 models — with permissions, auditing and event publication included from the first request, not added later.

From AUD $40k (ex GST) covering systems up to 15 models, including the perpetual licence and first year of support. Renews at $6k/yr. Larger systems are quoted after discovery.

What’s included

  • Discovery and specification of up to 15 models — their relationships, tenants, users and access rules
  • The full generated API surface: create, read, update, archive, search, pagination, consistent responses and errors
  • Multi-tenant permission model, record-level access and a complete audit trail — included, not extra
  • Standard user and tenant API: invitations, sign-in, password reset, profile updates and self-service account access — or sign-in through your existing identity provider
  • Role and permission assignment endpoints — or driven by your existing role management system, scoped during discovery
  • Perpetual licence and first year of support
  • Configuration from the standard list, specified during discovery — no per-item charge
  • One named response view per model, available on search and GET
  • One standard event connector publishing your business events to your Kafka, SNS or EventBridge
  • Generated API documentation
  • A tested lifecycle: validation, permissions, data access, auditing and event publication verified across the system
  • Deployment to development and production environments in your AWS account

We deliver the API; screens and portals are built by your team, or quoted separately. All items subject to the technical scope described in the client guide.

Available as quoted add-ons

The Core Package is a foundation, not a ceiling. These are quoted individually, before work begins:

  • Additional response views
  • Custom operations and multi-step workflows
  • Custom fields and data model extensions beyond the specified models
  • SSO and custom OAuth integrations; separate branded portals
  • Additional event connectors and capability modules
  • Data migration from existing systems
  • Additional environments (staging, UAT, partner sandboxes)
  • Managed operations — monitoring, incident response and cost management in your AWS account
  • Version upgrades and new capability releases

Included configuration

Standardised does not mean inflexible. Everything below is included as standard, specified during discovery and fixed at sign-off. Changes after sign-off are quoted as change requests.

Access

  • Require named permissions on a route, or open it deliberately
  • Name the permissions on any route yourself, or use the standard naming scheme
  • Session, machine-token, or public access per endpoint
  • Control who sees a route in the documentation — public, authenticated, internal, or hidden while still callable

Data integrity and validation

  • Enforce that related records share the same parent record
  • Add or remove fields a caller may submit
  • Redefine a field's rules — ranges, regex, enums, dates, decimal precision, length, nullability
  • Make a field required, or stop it being required
  • Server-set values, optionally locked so a client can't override them

What comes back

  • One named response view per model, available on search and GET
  • The view can include fields from parent records, not just the model's own columns
  • Return only records that have a given relationship, or include those without

Searching

  • Allow-list or deny-list which fields can be filtered
  • Require certain filters to always be supplied
  • Multi-column default sort
  • Default and maximum page sizes; disable expensive total counts

Auditing

  • Record stamps on every model — created by, created at, updated by, updated at — removable per model
  • Enable the audit trail per operation
  • Require a written justification before a change is permitted
  • Guaranteed (in-transaction) or high-throughput audit trail*
  • Record a business-meaningful action name

Integration

  • Event publishing on or off per model, and per create/update/delete operation
  • Add extra fields to the event payload — by default events are change notifications only
  • External keys on every model, so partners can supply their own identifiers and look records up by them — removable per model
  • Redirect renamed or moved endpoints so existing integrations keep working

Request shape

  • Custom URL path and HTTP method
  • Per-route request size limits

* Reviewed during discovery — this choice affects system performance and is agreed jointly.

How engagement works

  1. Free initial consultation

    A 45–60 minute conversation about your system, with an indicative range.

  2. Paid discovery

    A paid discovery engagement — from AUD $7,500 for a standard system of up to 15 models — where we model your domain together. You keep the model and specification either way, and receive a firm quote for the build.

  3. Build and deploy

    The Core Package price, fixed at discovery.

Support & licence

Your system is delivered under a perpetual software licence — it is yours to keep. The first year of support is included; after that, support renews at $6k/yr and covers security patches, upgrades, fault fixes and framework improvements. If support lapses the system keeps running — your licence is yours — but patches and upgrades stop. Details are in the client guide.

Hosting costs (indicative)

Your system runs in your own AWS account, billed by AWS directly to you, at cost. This is the entry configuration — the minimum a production deployment runs on. Every component scales independently; nothing is re-architected.

ComponentEntry spec~Monthly
Load balancer1 ALB$17–25
Application server1 small instance (auto-scaling)$12–15
PostgreSQL databaseSmall, single-AZ, 20 GB$15–30
User sign-in (Cognito)Standard$0–15
Logs, metrics, DNS, storage$5–15
Production total~$50–100/mo
Development environmentSmaller instances+$25–40/mo
Both environments, typical~$100–180/mo

During discovery we size the initial deployment to your expected load; scaling up is a configuration change, not a re-architecture. Once the system is business-critical we recommend a Multi-AZ database for zone-failure resilience. Figures indicative, reviewed quarterly, billed by AWS directly to your account.

About

A partner you can build on

We are a specialist backend practice for relational systems. Our work is deliberately narrow: secure, multi-tenant APIs with permissions, auditing and event publishing on one permission model, designed around the relationships in your data.

You own what we build. Your system is delivered under a software licence that is yours to keep, runs in your own AWS account, and continues to run whether or not you keep a support subscription — with clear handover terms if you ever take it fully in-house. We take on a small number of engagements and stay with them: modelling the domain, delivering the common surface quickly, engineering the parts that are genuinely yours, and operating the result.

Contact

Tell us about your relational system

Whether you need a new API, want to modernise an existing relational application, or need secure event publishing for integration partners, tell us about the problem.

It helps to know whether the system already has a relational database, roughly how many entities are involved, whether it is multi-tenant, who needs access, and which parts require custom business logic.

What can we help with? Select all that apply.

Describe the system, integration or backend challenge you are trying to solve. Please do not include passwords, access keys or other secrets.

0 / 4000

We use your message only to respond to your enquiry. See our privacy policy.