LZ.
Work / entry 001

CalCamp

Nutrition logging, hypertrophy programming, and weight-trend analysis in one iOS app — built around a campus dining database so a dining-hall meal logs as precisely as a packaged food.

Role
Lead Engineer — solo build
Timeline
Aug 2026 — Present
Platform
iOS · React Native New Architecture, Expo, C++ Nitro modules
Status
Shipped to TestFlight
Source
Private repository · walkthrough available on request
CalCamp Today screen showing the daily energy ring and queued local writes
TodayDaily energy
CalCamp campus dining menu for lunch at Busch Dining Hall
Campus dining222 dishes
CalCamp micronutrient breakdown across thirty-five tracked nutrients
Micronutrients35 tracked
CalCamp diary, water intake and logging streak
DiaryStreak & water
The problem

A campus plate has no barcode.

Nutrition apps are built around packaged food. Scan a barcode, get exact macros. But most of what a student on a meal plan eats never had a barcode, so the only options are guessing or logging something that is merely close. Do that three times a day and the numbers stop meaning anything.

CalCamp treats the dining hall as a first-class food source: menus are pulled live from Rutgers Nutrislice, so a campus meal is as precise an entry as a scanned box — and the rest of the app is built to hold that same standard.

What it does
01

Nutrition

Barcode scanning that resolves through FatSecret's GTIN-13 lookup, food search across USDA and Open Food Facts, on-device nutrition-label OCR, photo estimation, and live campus dining menus. Anything the camera reads can come from a photo taken earlier instead.

02

Training

A 232-exercise catalogue, user-created exercises, routine templates with supersets, and a live session logger with rest timers, plate maths, Brzycki 1RM estimates, and personal records.

03

Analysis

Weight-trend smoothing that separates real change from water and food, TDEE estimated from adherent days, and weekly volume per muscle with direct and assisting work counted separately. Thirty-five micronutrients are tracked against twenty targets, each with a plain-language note on what it actually does.

04

Platform

Apple Health read and write, Live Activities on the Lock Screen and Dynamic Island, campus geofencing, offline-first sync, and 13 languages including right-to-left layouts.

Decisions
The reason is in the source

An unreported value stays unreported

Macros are normalised per serving, and a nutrient the source never reported is stored as missing rather than collapsed to zero. A zero is a claim about the food; missing is the truth, and the difference compounds across a day of logs.

A plank is not three reps of anything

A set can be weight × reps, bodyweight reps, a duration, or a distance. Forcing every movement into one schema would make the training data quietly wrong, so the schema bends instead.

Secondary fatigue is routed, not ignored

A custom biomechanical volume-tracking algorithm attributes assisting work to the muscles that actually did it. Counting every set at full value against every muscle involved is what makes naive trackers fire false overtraining alerts, so the model splits direct and assisting volume instead.

Queued writes are shown, not hidden

The Today screen says “2 saved on device · queued” instead of pretending the log is already synced. Knowing a meal is held locally and will go up later is the difference between trusting the tracker and logging the same lunch twice.

Stack
Client
React Native New Architecture · Expo SDK 57 · TypeScript · C++ Nitro modules
Services
Node.js/Express proxy · Supabase · Sentry · EAS with CI/CD, TestFlight and OTA
Device
Bidirectional Apple HealthKit sync · ML Kit OCR · Dynamic Island widgets as iOS UI extensions
Data
FatSecret · USDA FoodData Central · Open Food Facts · Rutgers Nutrislice
© 2026 Lahin Zaman002 VISION Daemon