const invoices = await db.invoice.findMany({
  where: { status: 'overdue' },
  take: 25,
});

for (const invoice of invoices) {
  await notifyClient(invoice.clientId);
}
const invoices = await db.invoice.findMany({
  where: { status: 'overdue' },
  take: 25,
});

for (const invoice of invoices) {
  await notifyClient(invoice.clientId);
}
const invoices = await db.invoice.findMany({
  where: { status: 'overdue' },
  take: 25,
});

for (const invoice of invoices) {
  await notifyClient(invoice.clientId);
}
type SyncPayload = {
  orderId: string;
  items: LineItem[];
  total: number;
};

export async function syncOrder(payload: SyncPayload) {
  return api.post('/orders/sync', payload);
}
type SyncPayload = {
  orderId: string;
  items: LineItem[];
  total: number;
};

export async function syncOrder(payload: SyncPayload) {
  return api.post('/orders/sync', payload);
}
type SyncPayload = {
  orderId: string;
  items: LineItem[];
  total: number;
};

export async function syncOrder(payload: SyncPayload) {
  return api.post('/orders/sync', payload);
}
SELECT account_id,
       SUM(amount) AS revenue
FROM transactions
WHERE processed_at >= $1
GROUP BY account_id
ORDER BY revenue DESC
LIMIT 10;
SELECT account_id,
       SUM(amount) AS revenue
FROM transactions
WHERE processed_at >= $1
GROUP BY account_id
ORDER BY revenue DESC
LIMIT 10;
SELECT account_id,
       SUM(amount) AS revenue
FROM transactions
WHERE processed_at >= $1
GROUP BY account_id
ORDER BY revenue DESC
LIMIT 10;
if (!session?.user) {
  return NextResponse.json(
    { message: 'Unauthorized' },
    { status: 401 }
  );
}

await audit.log('report:generate');
if (!session?.user) {
  return NextResponse.json(
    { message: 'Unauthorized' },
    { status: 401 }
  );
}

await audit.log('report:generate');
if (!session?.user) {
  return NextResponse.json(
    { message: 'Unauthorized' },
    { status: 401 }
  );
}

await audit.log('report:generate');
const queue = new JobQueue({
  concurrency: 4,
  retry: { attempts: 3 },
});

queue.push(() => exportCsv(reportId));
queue.push(() => sendWebhook(event));
const queue = new JobQueue({
  concurrency: 4,
  retry: { attempts: 3 },
});

queue.push(() => exportCsv(reportId));
queue.push(() => sendWebhook(event));
const queue = new JobQueue({
  concurrency: 4,
  retry: { attempts: 3 },
});

queue.push(() => exportCsv(reportId));
queue.push(() => sendWebhook(event));
function formatCurrency(amount: number) {
  return new Intl.NumberFormat('en-AU', {
    style: 'currency',
    currency: 'AUD',
  }).format(amount);
}
function formatCurrency(amount: number) {
  return new Intl.NumberFormat('en-AU', {
    style: 'currency',
    currency: 'AUD',
  }).format(amount);
}
function formatCurrency(amount: number) {
  return new Intl.NumberFormat('en-AU', {
    style: 'currency',
    currency: 'AUD',
  }).format(amount);
}
docker compose up -d

services:
  app:
    image: robhd/app:latest
    depends_on: [db, redis]
  db:
    image: postgres:16
docker compose up -d

services:
  app:
    image: robhd/app:latest
    depends_on: [db, redis]
  db:
    image: postgres:16
docker compose up -d

services:
  app:
    image: robhd/app:latest
    depends_on: [db, redis]
  db:
    image: postgres:16

Custom Software Development

Business software built around the way you work.

If your business is relying on spreadsheets, repeated manual tasks, disconnected systems or other bottlenecks, I can build highly efficient customised systems that save time, reduce mistakes and make your business easier to run.

25+ Years Experience

Decades of web, software and IT experience across many industries.

Full-Stack Delivery

Project architecture, design, development, deployment & maintenance.

Direct Expert Contact

I fully own, manage & complete the work. No middlemen, No handoffs to junior or offshore developers. Complete direct accountability.

Project Types

Software I Build for Clients

Some examples of the types of software I can build for clients.

Custom Business Software

Custom Business Software

Custom business systems for managing internal data and workflows

AI Systems & Integrations

AI Systems & Integrations

AI tools & integration using cloud-based AI (ChatGPT, Claude, Gemini, CoPilot etc) or self-hosted private servers

Staff Portals

Staff Portals

Staff portals, intranets, document systems and internal knowledge bases

Enquiry & Booking Systems

Enquiry & Booking Systems

Booking, enquiry, quoting and job management systems

CRMs & HR Systems

CRMs & HR Systems

Systems for managing client leads, contacts, job candidates

Admin Dashboards

Admin Dashboards

Admin dashboards and back-office control panels

Payment Systems

Payment Systems

Invoicing, ecommerce, payment and accounting-related systems

Databases & Reporting

Databases & Reporting

Custom database design & reporting tools

Data Pipelines

Data Pipelines

Data imports, clean-up pipelines

Web Automation

Web Automation

Web scraping, browser automation and online data collection

API Integrations

API Integrations

Integrations between all types of software systems

Not Listed Here?...

Not Listed Here?...

I can build a wide variety of custom software, so if you don’t see your project type listed here, just ask!

Why Clients Use RobHD

How I Work

Clear Communication, Business Focused

I take time to understand your business, ask the right questions and communicate in plain English so we build exactly what you need.

Practical, Scalable Architecture

Clean code, solid databases and sensible architectures that are secure, maintainable and built to grow with your business.

Long-Term Support & Improvement

I do not disappear after launch. I provide ongoing support, updates and improvements as your business evolves.

Past Work

SameBoat project image 1
SameBoat project image 2
SameBoat project image 3
SameBoat project image 4
SameBoat project image 5
SameBoat logoSameBoat
  • SameBoat is a mental health community forum.
  • This is a fully custom-built platform, which includes: a specially designed article publishing content-management-system, public user forums, content moderation systems, and advertising features.
  • The client required high performance & low resource usage for this website. As with all websites I build, this is an easily solved priority: as a programmer with decades of experience, I optimize for speed and efficiency in ways not possible with more bloated content-management-systems such as WordPress.
  • Tech stack includes: PostgreSQL, login via Facebook (OAuth API integration), Elasticsearch.
Starr Exchange project image 1
Starr Exchange project image 2
Starr Exchange project image 3
Starr Exchange project image 4
Starr Exchange logoStarr Exchange
  • Starr Exchange was a crowdfunding & investment platform, allowing for fans & investors to support talent such as: artists, musicians & sportspeople etc.
  • Talent members created profiles, and text/photo/video content posts to promote themselves, while offering the opportunity to receive investments from fans. As well as sell art & merchandise directly on the website.
  • The backend control panel & database allowed for the management, tracking & reporting of investments and sales for each talent profile.
  • The client's previous developer couldn't deliver, often giving unclear answers on progress, due to needing to defer to others (such as offshore developers) who handled the technical work.
  • I was brought in to take over the project entirely: from spec, advice & project management to handling all aspects of the build. When you work with me, you deal directly with me alone on everything. No middlemen, no "Let me check with my guy, and I'll come back to you" communication overheads, bureaucracy or excuses.
SimpleDocs project image 1
SimpleDocs project image 2
SimpleDocs project image 3
SimpleDocs project image 4
SimpleDocs project image 5
SimpleDocs project image 6
SimpleDocs project image 7
SimpleDocs project image 8
SimpleDocs project image 9
SimpleDocs project image 10
SimpleDocs logoSimpleDocs
  • Fully custom-built online SaaS (software-as-a-service) document management & sharing system.
  • Advanced multi-tenant users & groups permissions system, and audit logs.
  • Included a custom invoicing & accounting backend. Integrated with Eway credit card payments API.
  • File encryption, versioning, and object-storage API integration.
  • Built-in calendar support, multi-timezone aware.

What Clients Say

Photo of Tim Griffiths

Tim Griffiths

Critical Input

I’ve worked with Rob continuously since 2014, across multiple businesses and projects.

Over this time, he's handled the development and ongoing management of multiple websites, as well as our custom-built CRM and HR software systems.

Rob combines extensive technical capability with clearly communicated business-focused guidance, which isn’t always easy to find in one individual. This is why I continue to work with Rob, and recommend him to others.

Photo of Mat Lewis

Mat Lewis

Margin Media

I’ve worked with Rob on and off since 2009. He’s someone I bring in whenever a project needs specialist, custom development.

Rob developed our SameBoat startup, delivering complex functionality that required real technical depth. Rob is reliable, detail-focused, easy to work with, and always thinks beyond the brief to find the best solution.

I can confidently recommend Rob for any custom software or web development work where quality and expertise matter.

Photo of Dr Lesley Petersen

Dr Lesley Petersen

Petersen Consulting

Rob has built, hosted, and managed my websites & online store for several years, and the experience has been consistently positive.

He is responsive, clear in his communication, and always willing to help or offer practical advice when I have needed it.

What I appreciate most about Rob’s work is his reliability and attention to detail in all the support he provides me with.

Photo of Rolf Drohn

Rolf Drohn

GruenerX

I needed to get a great website for my business up and running quickly. Working with Rob was refreshingly straightforward. He provided great advice specific to my business's needs.

The speed from inception to delivery was incredible. And it's great being able to just send updates through at any time, without having another system I need to manage myself.

Rob's rare mix of mature business-level advice, and technical expertise to own and deliver the work means he consistently gets it right the first time.

Clients Have Included