Climate tech · Australia

A serverless commute-emissions platform with rideshare, audit-grade exports, a portal and a mobile app, taken from first milestone to production-ready

AWS CDK across 18 DynamoDB tables and two Cognito pools, COPPA-grade consent for school programmes, QR-verified rideshare with scheduled settlement, fail-closed audit exports, and a React portal plus React Native app, hardened for a live pilot.

Client
Commute and rideshare emissions platform
Engagement
Ongoing partnership
Period
2025 to present
  • 18DynamoDB tables, all retained and protected
  • 16CloudWatch alarms routed to the client
  • 3,000+requests in the pre-pilot load check, all 2xx
The product

What it is

A climate programme for employers and schools. Organisations register with one or more sites; employees, parents, students and teachers join with a code, set up a commute profile and log trips in the mobile app. The app shows emissions avoided against a baseline, lets people share rides, and in school mode handles parental consent and school-zone rules. Portal admins see organisation and site reporting, data-quality checks, intervention scenarios, and two exports: a management CSV and an auditor-ready Audit Pack. The programme is coordinated from Western Australia and sits inside a wider ecosystem with a children's book and rewards.

Where we came in

The client had the programme, the partners and a design, and needed the software built from nothing: backend, portal and app. The non-negotiables were correctness and defensibility. Trip totals feed emissions claims, so rollups had to stay right under concurrent writes. Exports go to auditors, so a wrong number was worse than no export. Students are children, so consent and personal data had to be handled to COPPA and GDPR standards. We own all three codebases and have taken the platform from its first milestone through a two-week production-hardening pass ahead of a live pilot.

What we owned

  • All infrastructure in AWS CDK: security, storage, database, auth, domain, API and portal-hosting stacks per stage
  • Backend Lambdas for auth, onboarding and consent, commute logging, stats and leaderboards, rideshare, settlement, portal reporting, exports, reports and marketing enquiries
  • Rideshare workstreams A to D: route matching, QR co-presence evidence and settlement, notifications, acceptance testing
  • React and TypeScript admin portal: dashboard, sites, data quality, interventions, exports, settings and governance
  • React Native (Expo) app with business and school modes, published through EAS
  • Production hardening: separate prod stage, backup and restore rehearsal, load check, alarms, security headers, CSRF
Architecture

How the system is layered, from the people using it down to the data and the services it depends on.

  1. 01Clients
    • React Native (Expo) app: business and school modes
    • React 19 portal on S3 + CloudFront with CSRF and security headers
  2. 02Edge and identity
    • API Gateway with Cognito authorizers
    • App user pool and admin user pool (MFA required)
    • Route 53 and ACM per stage
    • KMS for guardian emails and secrets
  3. 03Lambdas by domain
    • Auth
    • Onboarding and consent
    • Commute
    • Stats and leaderboards
    • Rideshare
    • Settlement (every 30 min)
    • Portal
    • Export
    • Reports
    • Error notifier
  4. 04Data
    • 18 DynamoDB tables with PITR, retain and deletion protection
    • Transactional rollups across emissions, mode and data quality
    • Organisation-scoped access in one shared layer
  5. 05Operations
    • 16 CloudWatch alarms and an alerts topic
    • Google Routes API for distances
    • S3 presigned audit packs
    • Dev and prod stages from one CDK app
Engineering decisions

The choices that made the difference, and why we made them.

  1. 01

    Consent and privacy designed for children, not retrofitted

    Students can't participate until a guardian approves; the backend enforces the gate, the app only displays the state. Guardian email addresses are encrypted with KMS. Deleting a user removes the record, the commute profile, consent records and the Cognito identity, so no orphaned personal data remains. The authoritative behaviour lives in a system-logic document that the app and portal must conform to.

  2. 02

    Rideshare you can prove happened

    Drivers create trip groups, passengers request and are matched on route, and every accepted passenger scans one shared QR code at pickup. That scan records co-presence, the strongest evidence the platform collects, with the caveat stated explicitly in the audit method note. A settlement job runs every 30 minutes with early-settlement, no-start-ride and solo-fallback rules, and raw records are never deleted, only superseded.

  3. 03

    Rollups that stay consistent, exports that refuse to be wrong

    Each trip updates per-user, per-site and per-organisation rollups in one DynamoDB transaction, so dashboards never scan raw logs and never show a half-updated day. The Audit Pack re-derives daily totals independently, stops if they diverge from the rollups, and only then produces a hashed 13-file package by presigned URL. A self-invoking Lambda runs it past the gateway's synchronous timeout.

  4. 04

    A portal built for the person defending the numbers

    Beyond charts, the portal has a reporting-integrity card, a data-quality page with integrity checks, a verification ladder and audit notes, an interventions page with scenario modelling and method notes, and a governance log of settings changes. It's the difference between a dashboard and something you can hand to an auditor.

  5. 05

    Hardened before anyone depended on it

    Ahead of the pilot we stood up a separate production stage from the same CDK app, turned on point-in-time recovery, retain policies and deletion protection on every table, rehearsed a restore (a 10-item table back in under five minutes, checksum-identical), tuned Lambda timeouts and memory, ran a 3,000-request load check with bursts to 60 concurrent, wired 16 alarms to the client's inbox, and put a CSRF header and security headers in front of the portal.

Outcome
  • Every milestone shipped with evidence the client could review: CDK outputs, authenticated request samples, reconciliation reports and recordings.
  • Rideshare workstreams A to D are complete and signed off; the platform now verifies shared rides rather than trusting self-reports.
  • Production is deployed with backups rehearsed, alarms live and a documented recovery path, ready for acceptance testing with a real organisation.

Technology

  • AWS CDK
  • Lambda (Python 3.13)
  • API Gateway
  • DynamoDB
  • Cognito
  • KMS
  • CloudWatch
  • React 19
  • TypeScript
  • React Native
  • Expo

Building something similar?

Tell us what you're building. You'll get a straight answer on scope, timeline and cost, usually within one business day.