Work / Halley

Halley

Case folders for body shops and rental companies, rebuilt from the ground up

The problem

When a damaged car comes into a body shop, everyone involved needs the same evidence: the insurer, the appraiser, the owner. Photos, videos, claim numbers and documents used to travel by phone gallery and email chain. Replacement-car companies had the same problem at every handover: what condition was the car in, how much fuel, how many kilometres, who signed?

Halley already served these businesses, on an older system built with Laravel and Flutter. It needed rebuilding to scale.

What Halley does now

Halley is a multi-tenant platform with two products on one backend:

  • Halley Share gives every damaged vehicle a case folder. Staff add photos, videos and documents from their phone, then share the folder by link, WhatsApp, SMS or email.

  • Halley Rent documents a replacement car at handover and at return, with photos, fuel, mileage, a checklist, a contract and a signature.

It runs as a web app, a mobile app for staff in the yard, and an admin panel for the Halley team.

My role

I was the lead developer on the rebuild. I designed the new data model and built most of the backend, almost all of the web app and the admin panel. A teammate built the mobile app on top of my API, and other teammates handled the migration from the old database, image processing and the infrastructure.

A typed API that two apps can trust

The backend is TypeScript on Express and PostgreSQL, with 52 database models replacing the old system's separate login table per role. It has 212 API operations, each generated into an OpenAPI contract, so the web and mobile apps always agree on the shapes they send and receive.

I built the core services:

  • Share and Rent folders

  • organizations, branches and memberships

  • phone sign-in with one-time codes

  • file and video uploads to S3

  • folder emails with attachments or a ZIP

  • contracts and digital signatures

  • document templates and public report links

  • plan limits and moving vehicles between branches

The Halley Share dashboard with open folders and recent activity

The body shop's dashboard: open folders, folders shared this month and recent activity.

Sign-in that is hard to abuse

Staff sign in with a one-time code by SMS. Codes expire after ten minutes. Each phone can request five codes an hour and try each code five times. The limits are enforced in the database, every attempt is counted before the code is compared, and a code can only be used once. Phone numbers are masked in the logs.

Share a folder in one tap

Every folder gets a short public link. The insurer or appraiser opens it in a browser, without an account, and sees the photos, videos and claim details. The office can see whether it was sent and how many times the link was viewed.

The Halley Rent folders list

Replacement-car folders, filtered by branch and date.

Documents that print correctly

Contracts and reports are generated as PDFs, and the interface's main language is written right to left. I built the PDF layer to reorder mixed right-to-left and left-to-right text correctly and to switch fonts for digits and Latin letters, which the main font does not include. Companies design their own document templates with a drag-and-drop editor in the web app.

The vehicle fleet screen with vehicle details

A rental company's fleet, with each vehicle's status and history.

The admin panel

The Halley team runs the platform from an admin panel I built: organizations and their branches, users, the fleet, subscription plans, every folder, a help center and an audit log that also shows app errors and server logs.

The Halley admin dashboard

The admin dashboard, shown in English here.