WeCare Services Build plan · v1.0

WeCare — what we are building, and what it takes

A two-sided home-services platform for the Australian market: admins who own the business, service partners who do the work, and clients who book it. This document covers scope, the Australian compliance that shapes it, the technology, the data model, the timeline and the decisions we need from you before code starts.

Prepared 18 September 2026
Status Draft for review
Target wecare.trendriders.tech
Market Australia

1. The short version

WeCare is a managed marketplace, not an open one. The admin owns the business, sets the rates, and decides which partner attends which job. That single decision shapes everything below — it is simpler to build than an open marketplace, it is far easier to keep compliant, and it matches how the business actually operates.

~68

hours to a working POC

One focused week, full time, coding with Claude. Day-by-day breakdown in §12.

3

user roles

Admin, Service Partner, Client — each with its own registration, evidence and permissions.

1

PostgreSQL database

Roughly 20 tables. No second datastore is justified at this size.

11

services at full scope

We recommend launching with four and adding the rest once the engine is proven.

The three things that matter most

  1. Compliance is the product, not a feature. Seven of the eleven services are legally gated in Australia, and the gates differ by state. The credential engine — what each partner must hold, for which service, in which state, and when it expires — is the core of the system. Build it first.
  2. Privacy law applies from day one. Because WeCare delivers elderly care and nursing, it is a health service provider under the Privacy Act and the small-business exemption does not apply, whatever the turnover. This is not a "later" item. See §4.
  3. Whether partners are contractors or employees is a business decision with a six-figure tail. It changes superannuation, leave, payroll tax and workers' compensation, and it must be settled with an Australian employment lawyer before launch, not after. See §14.

2. How we proceed

Build the POC first, in one week. Show it to your friend working, not as slides. Everything else is then a decision made against something real.

Step 1~2 hours

Settle four questions

A conversation, not a workshop. Which state, which services, contractors or employees, NDIS or not. Details in §15. The other five questions can wait.

Step 2~68 hours

Build the POC

One focused week. Every screen in this document, working end to end, on real data — registration, credential gating, booking, allocation, live tracking, completion codes, ratings, payables and the daily report.

Step 3~1 day

Demo and iterate

Your friend drives it himself as all three roles. What he changes after using it is worth more than anything decided before it existed.

Step 4~60 hours

Harden to pilot-ready

Security and privacy review, document encryption, rate limiting, audit logging, accessibility, real error handling, backups and a restore that has actually been tested.

Step 5weeks — not ours

The external track

Runs in parallel from day one, owned by your friend. Employment-law opinion, insurance, privacy policy, and NDIS or Aged Care registration if needed.

The honest constraint: the code is the fast part. A POC is one week and pilot-ready is about two more. Neither is what gates go-live. An employment-law opinion, an insurance policy and — if it is needed — NDIS or Aged Care provider registration are external processes measured in weeks to months, and no amount of coding speed compresses them. Start that track on day one, in parallel with the build, not after the demo.

3. Scope — roles & services

The three registrations

RoleRegisters withCan do
Admin
the business owner
Invite-only. Email + password with mandatory two-factor. Photo required. Approve partners, verify credentials, allocate jobs, set and override rates, view all hours and payables, receive the daily report.
Service Partner
does the work
Self-registers, then is approved by an admin. Photo, identity documents and per-service credentials required. Set availability, see an allocated calendar, navigate to jobs, record travel and arrival, close jobs with the client's code, view earnings.
Client
books the service
Self-registers via Google or email + password. Photo required. Address verified. Request a service, see who is coming and how far away, hold the completion code, rate and comment.

Sign-in: both Google and email + password, for clients and partners, as you asked. Google reduces drop-off and gives a verified email for free; password sign-in matters because a meaningful share of older clients do not have — or do not want to use — a Google account. Admin accounts are password + two-factor only, never social sign-in.

The eleven services

"Regulated" below means a partner cannot legally perform that service in Australia without a specific credential, and WeCare must therefore refuse to allocate it.

ServiceGateBilling shapeSuggested launch
Elderly CareRegulatedHourlyWave 1
Children's CareRegulatedHourlyWave 2
NursingRegulatedHourly / per visitWave 3
PlumbingRegulatedCall-out + hourlyWave 2
ElectricianRegulatedCall-out + hourlyWave 2
ChauffeurRegulatedPer trip / hourlyWave 3
CookingConditionalPer serviceWave 3
CleaningStandardHourly / per jobWave 1
GardeningStandardHourly / per jobWave 1
Guest ServicingStandardPer turnoverWave 1
Events & DecorationsStandardQuotedWave 3

A recommendation you should push back on if you disagree. Launch with Wave 1 — cleaning, gardening, guest servicing and elderly care. Those four exercise every mechanism in the platform (hourly billing, a regulated credential, recurring bookings, completion codes) without requiring trade-licence verification, AHPRA lookups and driver accreditation to all be correct on day one. Adding a service afterwards is configuration, not a rebuild — the credential engine is designed for exactly that.

4. Australian compliance

This section is the reason the project is more than a booking app. Everything below was checked against current Australian sources in September 2026; sources are listed at the end of the section. Treat it as a well-researched starting point for your lawyer, not as legal advice.

4.1 What every partner provides, regardless of service

ItemWhyExpires
Photo (headshot)Shown to the client before arrival — your explicit requirementRefresh every 2 years
100-point identity checkIdentity assurance before any home visitOnce
Right to work in AustraliaCitizenship, PR or a visa with work rights — verified via VEVOWith the visa
Nationally Coordinated Criminal History CheckBaseline for anyone entering a homeRe-check every 3 years
ABNRequired if engaged as a contractorOngoing
Bank account + superannuation detailsPayment and, depending on classification, superOngoing
Public liability insuranceCertificate of currency, in the partner's own nameAnnually

A subcontractor cannot work under someone else's policy. Each partner must hold their own ABN and their own certificate of currency. The platform should store the certificate, read its expiry, and stop allocating work when it lapses.

4.2 What changes by service

ServiceAdditional mandatory credential
Elderly Care Under the Aged Care Act 2024, in force since 1 November 2025: a police certificate issued within 3 years, or an NDIS worker screening clearance (5 years). A police check older than three years no longer satisfies the obligation. First aid and CPR strongly expected.
Children's Care A state Working With Children Check. These are not portable: a NSW check is not valid in Victoria, and Queensland does not recognise interstate checks. NSW ≈ $112 / 5 yrs · VIC ≈ $139.20 / 5 yrs · QLD Blue Card ≈ $108.30 / 3 yrs. NSW issues no physical card — employers verify online.
Nursing Current AHPRA registration, verified against the public register — not from a certificate or a CV — including division, endorsements and any conditions. There is no official AHPRA API; approved employers can use the Practitioner Information Exchange, otherwise verification is a manual register lookup. Professional indemnity cover.
Plumbing State plumbing licence. Public liability is effectively mandatory: Victoria will not issue or renew a plumbing licence without a certificate showing at least $5 million.
Electrician State electrical licence. Queensland will not issue or renew an electrical contractor licence without public liability, and is the only state that also requires consumer protection insurance. Victoria requires $5 million minimum.
Chauffeur State driver accreditation — in NSW a passenger transport licence code plus individual Driver Authorisation; in Victoria commercial passenger vehicle driver accreditation, which itself requires a working with children check and a police check. Plus vehicle registration and CTP.
Cooking Food handler training, and a Food Safety Supervisor where the state or council requires one.
Cleaning, Gardening, Guest Servicing and Events carry no service-specific licence — the universal set in §4.1 applies.

4.3 If WeCare serves NDIS participants

An NDIS Worker Screening Check is mandatory for risk-assessed roles — which includes anyone delivering personal care, transport or daily living support. It costs roughly $85–$130, takes two to six weeks, and is valid for five years. Unlike a WWCC it is portable: a clearance issued in one state works in an NDIS role anywhere in Australia.

Timing worth knowing: the first cohort of checks issued in 2021 began expiring from 1 February 2026, so a renewal wave is running right now. Renewals can be lodged up to 90 days early and must be in at least 7 days before expiry to avoid a gap. The platform should warn at 90 days, escalate at 30, and hard-stop allocation at expiry.

4.4 Privacy — the part that is easy to get wrong

The small-business exemption does not apply to WeCare. The Privacy Act 1988 exempts most businesses under $3 million turnover — but not health service providers, and the Act's definition of a health service expressly includes activities carried out in the course of providing aged care, palliative care or care for a person with a disability. Offering elderly care or nursing puts WeCare inside the Privacy Act from its first client, at any turnover.

What follows from that:

  • Health information is sensitive information and attracts a higher standard than ordinary personal data. A client's care needs, mobility and medications all qualify.
  • The Australian Privacy Principles apply in full — collection notices, purpose limitation, access and correction rights, and a published privacy policy.
  • The Notifiable Data Breach scheme applies. An eligible breach must be assessed and, if serious, reported to the OAIC and to affected individuals.
  • A statutory tort for serious invasions of privacy commenced on 10 June 2025, and it applies regardless of whether an entity is covered by the Privacy Act. Individuals can sue directly.
  • The small-business exemption is being removed generally, with final phase-in scheduled for December 2026 — so even the non-care services would be captured soon.

Design consequences, which we build in rather than bolt on:

  • Identity and credential documents encrypted at rest, never in a public bucket, served only through an authenticated, audited endpoint.
  • Location history retained only for the life of the job plus a short dispute window, then deleted — not accumulated indefinitely.
  • A partner's location is captured only while they are en route to an accepted job, never continuously. This is both a privacy position and a worker-surveillance one.
  • Explicit, separately-recorded consent for photographs, location sharing and health information.
  • Every read of a client's sensitive record written to an append-only audit log.
  • A documented retention and deletion schedule, because "we kept everything forever" is itself a breach risk.

4.5 Sources

NDIS worker screening — NDIS Quality and Safeguards Commission · 2026 guide. Working With Children Checks — Queensland Government on interstate checks · state-by-state comparison. Aged Care Act 2024 — Aged Care Quality and Safety Commission · MinterEllison technical update. Nursing registration — AHPRA. Privacy — OAIC Guide to health privacy · OAIC on the small business exemption · Norton Rose Fulbright on the reforms. Gig-work regulation — Fair Work Ombudsman on employee-like workers · Fair Work Commission minimum standards order. Trade licensing and insurance — Trade Risk. Driver accreditation — Safe Transport Victoria · Service NSW.

5. Technology

The stack below is chosen for one overriding reason: it is the same stack already running five production applications on your VPS. That means no new deployment pattern, no new database engine, no new auth model, and a developer who already knows the operational shape of the box.

LayerChoiceWhy this one
FrameworkNext.js 15 (App Router) + TypeScriptOne codebase serves the marketing site, all three role portals and the API. Server components keep the client bundle small on phones.
LanguageTypeScript, strict modeRates, hours and payables are money. Types catch a whole class of error before runtime.
DatabasePostgreSQL 16Already on the box. Relational, transactional, with PostGIS available if proximity search is needed later.
ORM / migrationsDrizzleSame as TaxPro. Migrations are versioned files, reviewable in a pull request.
AuthAuth.js v5 — Google OAuth + credentialsIts own instance with its own allowlist, deliberately not wired into the shared proxy. Isolated blast radius.
UITailwind CSS + shadcn/uiAccessible primitives, responsive by default, no design-system build-out.
MapsGoogle Maps PlatformYou asked for Google specifically. Maps JS, Places Autocomplete, Geocoding and Routes. See §8.
EmailResendAlready used for TaxPro and ProductPro on the same box, with a verified sending domain.
FilesEncrypted volume on the VPS, served via authenticated routesIdentity and credential documents must never sit behind a guessable URL.
Background jobssystemd timer + a job tableCredential-expiry sweeps and the daily report. No queue infrastructure justified at this size.
HostingYour Hostinger VPS, port 3012, behind the shared nginxVerified free on the box, not taken from a list. TLS via the existing certbot.

Why not React Native or a native app? Because you specifically want Chrome to work for clients and partners, and a well-built responsive web app delivers that on day one with no app-store review, no release cycle and one codebase. If push notifications or background location later prove essential, the same codebase can be wrapped — but we should not pay that cost before we know we need it.

6. Databases & data model

One PostgreSQL database named wecare, with its own role, on the existing cluster. Roughly twenty tables. Nothing here justifies a second datastore, a document database or a cache layer — and each one we avoid is one fewer thing to secure, back up and keep consistent.

6.1 The tables that matter

GroupTablesHolds
Identity users, accounts, sessions, admin_profiles, partner_profiles, client_profiles One users row per person with a role; a profile table per role. Google and password logins both resolve to the same user.
Places addresses Line, suburb, state, postcode, plus latitude, longitude and the Google place_id captured at entry so we never re-geocode.
Compliance credential_types, service_credential_rules, partner_credentials The heart of the system. Which credential is required, for which service, in which state — and what each partner actually holds, with issue date, expiry, document and verification record.
Catalogue services, partner_services, partner_availability What is offered, who can perform it, and when they are willing to work.
Pricing rate_cards, rate_modifiers A base rate per service with effective dates, plus stacking modifiers for peak hours, weekends, public holidays, after-hours and urgency.
Work jobs, job_events, job_locations, completion_codes The docket, its full append-only history, en-route location pings, and the one-time code.
Money timesheets, job_charges, payables Minutes worked, what the client was charged, and what the partner is owed.
Feedback ratings Stars and comments, one per completed job, tied to the docket.
Plumbing notifications, audit_log, background_jobs Delivery records, an append-only access trail for sensitive reads, and scheduled work.

6.2 The credential engine, concretely

This is the piece worth getting right, so here it is in full. Requirements are data, not code — adding a service or a state is an insert, not a deploy.

-- What the law requires: service × state → credential
service_credential_rules
  service_id        -> services.id        -- 'childrens_care'
  state             text                  -- 'NSW' | 'VIC' | 'QLD' | ...
  credential_type   -> credential_types   -- 'wwcc'
  is_mandatory      boolean
  max_age_months    integer               -- e.g. 36 for an aged-care police check
  notes             text

-- What a partner actually holds
partner_credentials
  partner_id        -> partner_profiles.id
  credential_type   -> credential_types
  identifier        text                  -- licence / clearance number
  issuing_state     text
  issued_on         date
  expires_on        date
  document_key      text                  -- encrypted object key, never a public URL
  verified_by       -> users.id           -- which admin sighted it
  verified_at       timestamptz
  status            enum('pending','verified','rejected','expired','suspended')

Allocation then reduces to a single question the database can answer:

-- Can this partner legally take this job, in this state, today?
SELECT NOT EXISTS (
  SELECT 1
  FROM   service_credential_rules r
  LEFT   JOIN partner_credentials c
         ON  c.credential_type = r.credential_type
         AND c.partner_id      = $partner_id
         AND c.status          = 'verified'
         AND c.expires_on      > current_date
  WHERE  r.service_id   = $service_id
    AND  r.state        = $job_state
    AND  r.is_mandatory
    AND  c.id IS NULL           -- a mandatory credential is missing or expired
) AS is_eligible;

Why this shape earns its keep. A partner cleared for children's care in NSW who takes a Victorian job fails this check automatically, because the rule is keyed on state and a NSW WWCC is not valid in Victoria. That is a real legal trap, and it is caught by the data model rather than by someone remembering.

6.3 Two deliberate choices

  • job_events is append-only. Every transition — created, allocated, accepted, en route, arrived, completed, closed — is a row, never an update. When a client disputes a charge or a regulator asks what happened, the answer is a query, not a reconstruction.
  • Rates are versioned, never edited. Changing a rate inserts a new rate_card with a new effective date. A job permanently records the rate card it was priced under, so last month's invoice never silently changes when the admin updates this month's pricing.

7. The job lifecycle

Every request gets a single human-readable reference used everywhere — in the app, in emails and on the phone. One identifier, not three.

WC-2026-014377

#StateWho actsWhat happens
1REQUESTEDClientPicks service, address, date and time window. Docket issued. Indicative price shown from the live rate card.
2ALLOCATEDAdminAdmin allocates a partner. Only partners who are eligible (§6.2), available, and within range are offered.
3ACCEPTEDPartnerPartner confirms. The job lands in their calendar; the client is notified with the partner's name, photo and rating.
4EN_ROUTEPartnerPartner taps "on my way". Location sharing starts here and nowhere earlier. Client sees position and ETA.
5ON_SITEPartnerArrival recorded with a geofence check against the job address. The billing clock starts.
6WORK_DONEPartnerPartner marks the work finished. The clock stops. The job is not closed.
7CLOSEDClient → PartnerA 6-digit code appears in the client's app. The client reads it out; the partner enters it. Only a correct code closes the docket.
8RATEDClientStars plus an optional comment. Prompted immediately and again next morning if skipped.

How the completion code actually works

  • Generated only when the partner marks WORK_DONE — it cannot exist earlier, so it cannot leak earlier.
  • Six digits, random, shown only in the client's own session.
  • Stored hashed. A database read does not reveal live codes.
  • Five attempts, then it locks and an admin must intervene — this stops a partner guessing their way to a close.
  • Expires after 24 hours; an unclosed job escalates to the admin rather than sitting silently.

Worth being clear-eyed about what this control does and does not prove. The code proves the partner was with the client at the end of the visit and the client was willing to release it. It does not prove the work was done well, and it fails in the exact case you most need it — a client with dementia, or one who is asleep when the visit ends. So we pair it with the geofenced arrival, the timestamped event trail and, for care services, an optional photo or visit note. And we build the admin override from the start, because it will be needed in week one.

8. Maps, tracking & ETA

NeedHow
Address entryPlaces Autocomplete, restricted to Australia. We store the place_id, latitude and longitude at entry — so we geocode once, never repeatedly.
Partner navigationA deep link that hands off to the Google Maps app the partner already uses. We do not rebuild turn-by-turn navigation — it would be worse and cost more.
"Where is he, how far?"The partner's browser reports position while EN_ROUTE. The client sees a live marker and an ETA.
Travel time between jobsRoutes API, computed when the calendar is built and when a job is allocated — warning the admin before they book someone who cannot physically get there.

Two engineering decisions that control the cost

  1. Do not call the Routes API on every location ping. The naive build recalculates the ETA on each update and the bill scales with the number of pings. Instead: recompute a real route every 60–90 seconds, and between recomputes update the displayed distance from straight-line movement. The client cannot tell the difference, and the call volume drops by more than an order of magnitude.
  2. Always complete an Autocomplete session. Google bills autocomplete by session, and a session that ends in a Place Details call is currently free — while an abandoned session is charged. Wiring the flow so every address selection finishes properly is worth real money at volume.

Tracking a worker is surveillance, and should be designed as such. Location is captured only between "on my way" and arrival, and only for the job in hand. It is never collected while a partner is off-shift, it is visible only to that job's client and the admin, and it is deleted on a short schedule. Beyond the legal exposure, continuous tracking is one of the fastest ways to lose good partners — and good partners are the scarce resource in this business.

Infrastructure note. Live tracking is the one requirement none of the eleven existing applications on your VPS have. It needs either polling or a streaming connection through nginx, and a streaming connection requires specific vhost configuration. Recommendation: start with polling every 15 seconds. "How far away is he" does not need sub-second precision, polling needs no nginx change at all, and it is trivially debuggable. Add streaming only if the polling genuinely proves inadequate.

9. Rates, hours & payments

How the admin controls pricing

A base rate per service, then modifiers that stack in a defined order:

ModifierTriggerExample
Peak hoursTime-of-day window×1.25 before 7am or after 7pm
WeekendSaturday / Sunday×1.5 Sunday
Public holidayState holiday calendar×2.0
UrgencyBooked under N hours notice×1.3 inside 4 hours
ScarcityFew eligible partners available×1.15, capped
Minimum call-outTradesFirst hour charged in full

Public holidays are state-specific in Australia, so the holiday calendar is keyed by state — a Melbourne Cup surcharge should not fire in Perth.

How hours are measured

The billing clock runs from geofenced ON_SITE to WORK_DONE, rounded to a configurable increment (15 minutes by default). Travel time is tracked separately and is not billed to the client unless the admin enables it for a service. The admin can adjust any timesheet, and every adjustment is logged with who made it and why.

What the admin sees

  • Hours by partner, by service, by day, week or month
  • Jobs completed per partner and the revenue against each
  • Amount payable per partner for the period, net of any platform commission
  • Average rating and any job that fell below a threshold

Out of scope for v1, deliberately. Taking card payments from clients, and paying partners automatically. Both are achievable — Stripe handles them — but each brings its own compliance surface, and neither is needed to prove the business works. v1 calculates what is owed and produces the figures; money moves through your friend's existing accounting process. We can add payments once the operation is real.

10. Alerts & the daily report

EventClientPartnerAdmin
Request received✓ email + in-app✓ in-app
Partner allocated✓ name, photo, rating✓ job offered
Partner en route✓ with live ETA
Arrived on site
Work marked donewith the code✓ awaiting code
Job closed✓ rate prompt✓ earnings updated
Credential expiring✓ 90 / 30 / 7 days✓ 30 days
Job unclosed after 24h✓ escalation

The end-of-day report

Sent to the admin by email at a configurable time — proposed 7:00 pm local time, so the trading day is genuinely finished. It is a real email with the numbers in the body, not a link to a dashboard, because it needs to be readable on a phone without signing in.

  • Per partner — jobs completed, hours worked, revenue generated, amount payable
  • Totals — jobs, hours, revenue, total payable
  • Exceptions — jobs not closed, codes that locked, ratings of 3 stars or below, partners who did not arrive
  • Tomorrow — jobs booked, and any that are still unallocated
  • Compliance — credentials expiring within 30 days

The exceptions block is the point. A report of what went well gets skimmed after a fortnight. A report that leads with what needs attention keeps getting read — and it doubles as the daily compliance check.

11. One app, every device

You asked for the app to know whether it is on a computer or a phone and size itself accordingly. Here is how we do that, and one place where I would push back slightly.

DeviceWhat it gets
Phone (< 768px)Single column, bottom tab bar, large touch targets, camera-first photo capture, one-tap navigation. This is the primary design target for partners — they work from a phone.
TabletTwo-column layouts, side navigation. Comfortable for a client browsing services.
Desktop (≥ 1024px)The admin surface: multi-column allocation board, dense tables, keyboard shortcuts, side-by-side map and job list. This is where the admin actually works.

The push-back. "Detect the device and serve a different app" is the intuitive approach and it is the wrong one — it means two interfaces to build, test and keep in step, and device detection is guesswork that gets a tablet or a large phone wrong often enough to matter. Responsive layout gets you everything you actually asked for, from one codebase, and it is correct at every width rather than at three guessed ones. Where the experience genuinely differs — the admin's allocation board is not useful on a phone — we build that as a distinct screen, chosen by the role and the viewport, not by sniffing the user agent.

It is installable from Chrome on both Android and iOS — the partner gets a home-screen icon and a full-screen app without an app store. Offline handling is limited but deliberate: a partner in a basement with no signal can still see today's jobs and addresses from cache, and any action they take is queued and sent when signal returns.

12. Timeline & effort

Built with Claude, full time. The estimate is in hours, because that is the unit that matters when one person can sit down and close the whole thing in a week.

~68 h

POC — one focused week

Every flow working end to end on real data. Demonstrable to your friend.

~60 h

POC → pilot-ready

Security, privacy, encryption, audit, accessibility, backups, real error handling.

weeks

The external track

Lawyer, insurer, registrations. Not code, not ours, and not compressible.

The POC week, day by day

DayHrsBuild
112 Next.js + Postgres + Drizzle scaffold. Auth.js with Google and email/password. Three roles, route guards, profiles, photo upload. Deployed to the VPS by end of day — deploy on day one, not day six.
212 The credential engine (§6.2): credential types, per-state rules, document upload, admin verification queue, expiry sweep, and the eligibility query that gates allocation.
312 Service catalogue, partner capabilities and availability. Rate cards with stacking modifiers. Client booking flow → docket number. Admin allocation board filtered by eligibility.
412 Partner calendar with travel time. Google Maps: Places Autocomplete, navigation hand-off, en-route tracking, client-facing live ETA.
512 Completion codes with geofenced arrival. Ratings and comments. Timesheets, charges, payables. The end-of-day email report.
68 Responsive pass on real phones, installable PWA, seed data, a demo walkthrough script, and the deploy verified by served bytes.
≈ 68 hA POC your friend can drive himself, as all three roles.

What the POC deliberately will not have

Saying this up front is what keeps the week to a week. None of it is hard; all of it is the second block of ~60 hours.

  • Automated credential verification. The admin sights the document and ticks it. There is no AHPRA API to call anyway.
  • Card payments. The POC calculates what is owed; money moves outside it.
  • Encryption at rest for documents, and full audit logging. Required before a single real client, not before a demo.
  • SMS and push. Email and in-app only.
  • Load and penetration testing.

The one thing that must not slip into "later". A POC holding invented data is fine. The moment it holds one real elderly client's details or one partner's passport scan, the Privacy Act obligations in §4.4 apply in full — because WeCare is a health service provider and the small-business exemption does not reach it. Demo on seed data. Do not let a real client's record into the POC before the hardening block is done.

13. What it costs to run

13.1 Bluehost VPS — real prices

Self-managed VPS, taken from Bluehost's Australian pricing page in September 2026. Prices are AUD per month on a 24-month term, which is what the advertised rate requires.

PlanvCPURAMNVMeIntro /moRenewal /mo2-yr intro total
NVMe 212 GB50 GBA$6.55A$7.94≈ A$157
NVMe 4 ← recommended24 GB100 GBA$13.24A$16.73≈ A$318
NVMe 848 GB200 GBA$18.13A$40.46≈ A$435
NVMe 16816 GB450 GBA$36.27A$69.77≈ A$871

NVMe 4 at A$13.24/month is the right size. For comparison, the VPS already running eleven production applications is an 8 vCPU / 31 GB box sitting at about 3% disk use. WeCare alone — Next.js plus Postgres — will not trouble 2 vCPU and 4 GB at POC or early-production volume.

Two things to check before you commit to 24 months.

1 · Sydney may not actually be selectable yet. Bluehost announced Sydney self-managed VPS on 31 August 2026, but when I read their live Australian VPS page the location picker offered only USA (Virginia), USA (Arizona), London, Toronto and Amsterdam — no Sydney. I could not confirm it is purchasable. Verify it appears at checkout before paying for two years, because a Sydney-hosted app serving Australian clients from Virginia adds roughly 200 ms to every request.

2 · The renewal price is not the headline price. NVMe 8 goes from A$18.13 to A$40.46 — it more than doubles. NVMe 4 is the gentlest step up (A$13.24 → A$16.73), which is a second reason to prefer it.

13.2 If Sydney is not available — confirmed Australian alternatives

All of these have had a Sydney region for years, and all are self-managed in the same way, so nothing about the build changes.

ProviderSydneyComparable planIndicative /mo
VultrYes2 vCPU / 4 GB NVMe≈ US$24
DigitalOceanYes (SYD1)2 vCPU / 4 GB≈ US$24
Linode / AkamaiYes2 vCPU / 4 GB≈ US$24
AWS LightsailYes (ap-southeast-2)2 vCPU / 4 GB≈ US$24

Entry-level plans at all four start around A$6–9/month. Bluehost's NVMe 4 is genuinely cheaper than the US$24 tier — if Sydney is available. If it is not, the latency is worth more than the saving.

13.3 Everything else

ItemCostNote
TLS certificateA$0Let's Encrypt via certbot, auto-renewing.
Domain .com≈ A$20–30/yrNo residency requirement.
Domain .com.au≈ A$20–40/yr⚠ Requires an ABN or ACN — an Australian presence. Your friend has one; you would not be able to register it yourself.
Email (Resend)A$0 → ≈ US$20/moFree tier covers POC and early production comfortably.
PostgreSQLA$0Runs on the same VPS. A managed database is not justified at this size.
BackupsA$0–5/moNightly pg_dump plus off-box copy. Bluehost charges separately for snapshots.
Google MapsThe real variableSee below.

Google Maps is the one bill that can run away, and I have not verified current rates closely enough to give you a confident monthly figure. Google restructured Maps Platform pricing across 2025–26 and the SKUs moved. What is stable enough to plan against: Autocomplete is billed per session and a session completed with a Place Details call is currently free while an abandoned one is charged; Place Details runs around US$17 per 1,000 calls; and Route Matrix is billed per origin-destination element (about US$0.008 each). The two design decisions in §8 exist purely to hold this down. Model your expected call volume against Google's live pricing page and set a hard billing cap before launch.

13.4 Realistic monthly running cost

≈ A$15

POC / demo

NVMe 4 VPS, free TLS, free email tier, near-zero Maps usage on seed data.

≈ A$40–80

Early production

Same VPS, paid email tier, and real but modest Maps usage. Maps is most of the variance.

A$0

Right now

This site is on your existing VPS as its twelfth app — no new hosting spend to show your friend.

Build cost is your time — roughly one week for the POC and two more to pilot-ready. The costs your friend carries directly, and which dwarf the hosting, are legal advice, insurance premiums, any NDIS or Aged Care registration, and each partner's own screening checks.

14. Risks

RiskSeverityWhat we do about it
Partners are found to be employees, not contractors Critical Superannuation, leave, payroll tax and workers' compensation would apply retrospectively. Get a written employment-law opinion in week one. Note that the Fair Work Act already recognises employee-like workers on digital labour platforms, with unfair-deactivation protection since 26 August 2024, and the Commission made its first binding minimum standards order — for on-demand delivery — effective 17 August 2026, with further applications under consideration. The direction of travel is one way.
A privacy breach involving health or identity data Critical Encryption at rest, authenticated document access, audited reads, short retention, and a written breach-response plan before launch. The Notifiable Data Breach scheme applies, and the new statutory tort lets individuals sue directly.
An unscreened partner attends a vulnerable client Critical Eligibility enforced in the database at allocation (§6.2), not in the interface. No admin override on a mandatory credential — the override exists for timesheets, not for screening.
Deactivating a partner triggers a Fair Work claim High Employee-like workers who have worked through a platform regularly for six months can challenge unfair deactivation. Build a documented process — warning, reason recorded, right of reply — rather than a delete button.
Maps costs scale faster than revenue High Cache geocodes, throttle route recomputation, complete every autocomplete session, set a hard billing cap with alerting.
Credentials lapse quietly High Daily expiry sweep, escalating reminders at 90 / 30 / 7 days, automatic suspension at expiry, and expiring credentials surfaced in the daily report.
Eleven services at once Medium Launch Wave 1. Each regulated service adds a distinct verification path, and doing six of them badly is worse than four well.
Twelfth app on a single production box Low Resource headroom is ample. The real risk is operational — a shared nginx and one Postgres. Mitigated by the existing rules: own port, own database, own auth, never restart nginx.

15. Decisions owed before code starts

These are your friend's calls, not ours. Each one changes what gets built.

#QuestionWhy it matters
1Which state(s) at launch?Screening, licensing and driver accreditation are all state-administered. One state first is materially cheaper.
2Contractors or employees?Changes payables, contracts, onboarding, insurance and tax. Needs a lawyer, not an opinion.
3Will WeCare serve NDIS participants or funded aged care?If yes, provider registration is an external process measured in months and must start now.
4Which services at launch?We propose Wave 1 — cleaning, gardening, guest servicing, elderly care.
5Who carries insurance — WeCare, or each partner?Determines what we verify and store, and who is exposed when something goes wrong.
6Does WeCare take payment, or just calculate it?We propose calculate-only for v1. Taking card payments adds a compliance surface.
7Commission model?Percentage, flat fee per job, or partner-pays-subscription. Drives the payables calculation.
8How many admins, and can they all see everything?One owner is simple. Several with different permissions is a role model we should design now rather than retrofit.
9Is the business name "WeCare" cleared for use in Australia?Worth a business-name and trade-mark search before we print it on uniforms. It is a common name.

What we need from you to start: answers to 1, 2, 3 and 4. Those four determine the shape of the build. The rest can be settled during Phase 1 without holding anything up.

16. Who owns what

Your friend owns the business, the VPS, the domain and the data. We build the proof of concept. That is the right structure — it puts the obligations in §4 where they belong, with the person operating the business, rather than with the person who wrote the code. Three things make it actually hold, and none of them are expensive.

1 · Everything in his name from day one — not "transferred later"

AssetIn whose nameWhy it matters
DomainHisA .com.au requires an ABN or ACN — an Australian presence — so it has to be registered to him regardless. A domain in your name is a negotiation later.
VPS account & billingHisWhoever's card is on the server owns the server, and is the one the host talks to.
Google Cloud / Maps keyHisThe single most important one. Maps is the bill that can run away (§13) — it must hit his card, with his quota cap, not yours.
Email sending accountHisMail sent about his clients should come from his account and his domain.
Code repositoryYours to build, his on handoverAgree this up front. Transferring a repo takes a minute; arguing about it later does not.
The dataHis, alwaysHe is the entity collecting personal and health information. You are never the one holding it.

2 · Never let real client data into the POC

This is the one that actually matters, and it is entirely within your control. Demonstrate on invented data — the names and addresses in the screen designs are exactly that. The moment one real elderly client's care notes or one partner's passport scan lands in a database on a box you control, you are handling sensitive information under the Privacy Act, on infrastructure you own, for a business that is not yours. Seed data costs nothing and removes the entire question. Real records go in only after the hardening block, and only on his infrastructure.

3 · One page in writing — not a contract, just a record

You are not incorporating anything or hiring a lawyer. You just want it on record that you delivered a proof of concept, that the compliance research is research and not legal advice, and that operating the business — licences, insurance, screening, privacy obligations — is his. Something like this, by email, acknowledged with a "yes agreed", is enough:

Hi [name], Before I start, just so we are both clear on what this is. I am building a proof of concept for WeCare — working software to demonstrate the idea and get feedback. It is not a finished, production-ready or legally compliant system, and it should not be used with real client information until it has been through a proper security and privacy review. The build plan I have put together includes research on Australian requirements — worker screening, licensing, privacy, insurance. That is research to give you a head start, not legal advice. You will need your own lawyer and insurer to confirm all of it before you operate. Everything operational goes in your name from the start: the domain, the server, the Google Maps billing account and the email account. You own the business, the data and the infrastructure. I will hand over the code and all access when we are done. I will demo on made-up data only. No real client or worker records go into the system while I am building it. Happy to start on that basis — just reply and confirm. [you]

So — is your structure OK? Yes. Building a POC for someone who owns the business, the infrastructure and the data is an ordinary contracting arrangement, and the obligations in §4 land on the operator, not on the developer. The two things that would erode it are keeping the infrastructure in your name and putting real client records into a demo. Avoid both and you are in a clean position. This is a practical view, not legal advice — but it is the same arrangement most contract developers work under.

A note on this document. The compliance research in §4 was gathered from current Australian government and industry sources in September 2026 and is cited so it can be checked. It is not legal advice, fees and thresholds change, and several of the rules cited are actively being reformed. Every item in §4 should be confirmed with an Australian lawyer before launch — but it should mean that conversation starts from a well-informed position rather than a blank page.