Work report
November 2026

Three months of FreeHealth,
in four workstreams

What shipped, why it mattered, and what is still open.
Kulpatch Chananam 2 Aug – 2 Nov 2026 Repo: FreeHealthAI/FreeHealth
Overview

Four streams of work, one product

01
Patient & doctor product
Prescriptions, telehealth booking, and a doctor day that runs on one timeline.
02
Social health layer
Circle, feed and profile tiles — plus the Health Passport that lives in Apple Wallet.
03
Release engineering
CI/CD: every change is checked, and merging is what deploys it.
04
Cleanup & handover
Retired code removed, brand assets consolidated, the pipeline written down.
Four workstreams, Aug–Nov 2026
Context

The three months, in numbers

Context, not the argument — the four workstreams come next.

273
commits by me, excluding merges
43
active days out of 92
+101.6k
lines added (80.6k removed)
15
of my pull requests merged into main
All figures are my own commits, 1 Aug – 2 Nov 2026 127 fix · 57 feat · 22 ci · 10 docs
01Patient & doctor product

A visit became bookable, moveable and cancellable inside the app

  • Prescriptions. A NY-compliant Rx flow, patient tracking, and a pharmacy counter pickup handoff.
  • Booking. Patients pick from real doctor availability, filter by when and who, and keep a preferred doctor for calls.
  • Changes without a phone call. Reschedule with another doctor, cancel an upcoming visit, accept or decline a doctor's follow-up.
The doctor side One multi-day timeline replaces a list of appointments, so a whole day reads at a glance. Missed visits surface as alerts, and cancelling reassigns the patient instead of dropping them.
August workstream · 67 commitsBranches: kulpatch/* → main via PR
01Patient & doctor product
The clinic stops being the bottleneck: a patient can move or cancel a visit without calling, and the doctor's day is one screen.
That is the difference between a demo and a product a clinic can actually run on — the scheduling rules live in the app, not in someone's head.
Supporting detail: 18 scheduling and calendar commits, 10 auth and onboarding fixesAug 2026
02Social health layer

Health data stopped being a private dashboard and became something you share

  • Circle. Invite by link, mutual-friendship gating, friend check-ins, a friend's profile and posts.
  • Feed. Stories for highlights and milestones, cheers and comments that update live, one share per scan.
  • My Posts. Profile grid tiles for sleep, meals, drinks, steps, runs, workouts and scans — each with its own treatment.
The engine underneath Home, Profile and Friend screens were paged instead of loading everything, and posts queue per account so a failed upload no longer loses a post.
September workstream · 160 commits, the largest monthiOS 68 · profile 38 · feed 30 · circle 19
02Social health layer

The Health Passport is the piece users carry

  • Built from real data. Passport fields are the profile, not a form filled twice.
  • Three paths. Manage, present, and share are separate flows with a guided setup for the first tier.
  • In Wallet. Generation and add-to-Wallet are live, with the pass redesigned around the heart logo.
Why it matters A scannable health record that opens without the app is the feature people show each other — it is also what makes the feed and Circle worth filling in.
Supporting detail: 35 passport commits, 5 of them on the Wallet passSep–Oct 2026
03Release engineering

Shipping stopped depending on who was at the laptop

Before October
  • Builds and checks ran on a developer's machine, when someone remembered.
  • A change to shared code could break another platform silently.
  • Deploying meant credentials on a laptop and a manual sequence.
  • Staging and production were easy to confuse.
After October
  • Every pull request builds functions, admin portal, iOS and Android, and runs the Firestore rules tests.
  • A labelled PR merges itself once green — one approving review still required.
  • Merging to main deploys staging automatically; production and admin each deploy from one button.
  • Deploy credentials are issued to the pipeline, not stored on anyone's laptop.
22 CI commits in 5 days · 4 workflowsOct 2026
03Release engineering

One path from a branch to production

01
Pull request
Change detection per platform — only the affected builds run.
02
Checks
Functions, admin portal, iOS simulator (45 min cap), Android, Firestore rules.
03
Auto-merge
Green checks + one approving review + the automerge label.
04
Staging deploy
Runs by itself on merge to main, against the isolated staging project.
05
Production
A person presses one button. Nothing reaches users by accident.
Plus a safety net that retries auto-merge every six hours, so a green PR cannot sit stuck.
Xcode Cloud handles iOS signing; GitHub Actions handles the restOct 2026
03Release engineering
A merged change can no longer quietly break another platform — that is the whole value of this workstream.
The four platforms build on every relevant pull request, staging is isolated from production, and production still needs a human decision. Onboarding cost drops with it: the pipeline is the documentation.
Supporting detail: 4 workflows, 4 platforms built on pull requests, iOS job bounded at 45 minutesOct 2026
04Cleanup & handover

Removed the second product, then wrote down how to run the first

  • Retired code deleted. The old Doctor app and the Supabase backend are gone from the repo.
  • One home for brand assets. Master logo, app icon and Wallet pass art in brand/, with a map of every copy each platform needs.
  • Docs the team can act on. CI/CD guide, pipeline diagram, archived apps, FaceHeart SDK setup, and a maintenance-reminders list.
The review rule Protected files now route their approval to a named person, so a change to CI or credentials cannot merge itself unnoticed — and the reason is written next to the rule.
Supporting detail: 10 docs commits, 8 chore commitsOct 2026
04Cleanup & handover
Someone else can now ship a change without asking me — pipeline, docs and review rule are all written down.
That is what makes the previous three workstreams survive a handover: a smaller codebase to read, assets in one place, and a documented path from branch to production.
Supporting detail: repo reduced to one product; Xcode project marked generated, with a drift check in CIOct 2026
Still open

What I would fix next, in this order

17 tests are skipped on main to keep the PR check honest
Debt that hides regressions. Each one needs a decision: fix, or delete and cover the behaviour another way.
Apple Wallet certificate has a renewal date, not an owner
If it lapses, existing passes stop updating. The date is in the docs; the reminder needs a person attached.
Protected-file approvals depend on one reviewer
A second approver removes the queue, not just the risk.
A local Xcode project edit is still uncommitted
The project file is generated; uncommitted drift is how generated projects start lying.
Ordered by what costs more the longer it waitsNov 2026
Appendix

How these numbers were produced

Source

git log on the working copy of FreeHealthAI/FreeHealth, 2 Aug – 2 Nov 2026.

The 273 figure excludes merge commits and excludes other contributors. Team merges by Benedict Lim, Himanshu, Nisha and Owen Zhang are in the repo history but not in my count.

Full detail on request

  • All 273 of my commits, listed by month with hashes.
  • Claude Code sessions behind each branch, with dates and scope.
  • Available as a Google Doc if the summary is not enough.
‹ › arrows · ← → keys · F fullscreen