Tushar Lachman
Melbourne · RMIT ’27
PERSONAL DASHBOARDIn daily use — mine

Jarvis — Personal Life OS

One screen for tasks, calendar, health and money as an international student.

Jarvis — Personal Life OS — screenshot
38
rest endpoints
10
migrations
2
wearable ecosystems
2
currencies

Watch it run

02 TAKES
TRAILERThe short, edited version♪ SOUND ONThe whole product in under forty seconds — the day on one grid, the two-watch reconciliation, the live transfer rate against its 30-day average, and Claude turning a bank statement PDF into transactions waiting for approval.
FULL WALKTHROUGHThe unedited takeThe app driven end to end, uncut and at real speed: read the day, look ahead a week and a month, book something in, check both wearables, then the money — the tuition goal, a transfer logged, a statement uploaded for Claude to read, and the Indonesian side of the accounts.

Every feature, step by step

05 FEATURES · 17 SCREENS · OPEN ONE

One screen for the whole day

06 STEPS
What I actually open in the morning: what has to be done, what is booked, how I slept and what the money is doing — without opening six apps to find out.

Both watches, one day

03 STEPS
I wear a Fitbit and a Galaxy Watch 8 Classic. They report into two ecosystems that do not talk to each other, and this is the screen that makes them agree.

Money in Australian dollars

04 STEPS
Half of my money is here and half is at home, and they need to be looked at differently. This is the Australian half: what is in the accounts, what is owed to the university, and what left this month.

Where the numbers come from

02 STEPS
Banks send PDFs, not APIs. Claude reads the PDF; a person still approves what it found.

The other half, at home in rupiah

02 STEPS
The Indonesian side is a different problem: a different bank, a different currency, and receipts that arrive by email rather than in a statement.

Every task, event, figure, transaction and health reading in these captures is invented. Jarvis is wired to my own bank, inbox and health accounts, so rather than seed a database or edit the app to make it presentable, the capture harness replaces the browser’s own fetch before any application code runs: the dashboard asks for /api/… exactly as it always does and gets made-up JSON back. The dev server is started with synthetic credentials as well, so no real account is reachable even in principle, and the repository itself is not modified at all. The bank on the uploaded statement does not exist either. My own name and course are the one real thing left on screen, and only because they are already the title of this site. Beyond the invented data nothing is retouched — every layout, control and state is the app exactly as it runs.

WHY IT EXISTS

Moving from Jakarta to Melbourne meant my life was split across two countries and about six apps. Jarvis pulls it into a single dark HUD-style command centre: what I have to do today, what is in my calendar, how I have been sleeping and eating, and what my money is doing in two currencies at once.

How it’s put together

L00
Next.js App Router front end
L01
38 REST endpoints
L02
PostgreSQL on Supabase · 10 migrations
L03
Google OAuth — Calendar, Tasks, Gmail
L04
Google Health, read live from its API
L05
Samsung Health, parsed from a file export
L06
Claude document parsing for statements and receipts
L07
AUD↔IDR rate tracker with a 30-day baseline

Built with

Next.js 16React 19TypeScriptSupabasePostgreSQLClaude APIGoogle Health APISamsung HealthGoogle APIsSWR
PERIOD
June 2026
ROLE
Solo — design, build, ship
SOURCE
View on GitHub ↗

The hard parts

08 NOTES
1

38 REST endpoints and 10 PostgreSQL migrations behind a Next.js App Router front end, grouped by the thing they serve — auth, calendar, tasks, health, finance, fx, profile.

2

A Google OAuth flow with token refresh, syncing Calendar, Tasks and Gmail into one dashboard.

3

I wear a Fitbit and a Samsung Galaxy Watch 8 Classic, and the two ecosystems do not talk to each other — the Fitbit reports into Google Health, the Galaxy Watch into Samsung Health. Jarvis reconciles both into a single day: Google Health read live from its API, Samsung Health’s file export parsed by Claude into structured activities and meals.

4

Re-importing an export can’t duplicate anything: every activity carries the source file’s own record id, so an overlapping second import is a no-op rather than a double-counted run.

5

Claude also reads uploaded bank statements and Gmail receipts and returns structured transactions — unstructured documents become queryable records.

6

The money side tracks both currencies separately and honestly: AUD statements and transactions, IDR statements from home, tuition instalments, and email-synced receipts, each with their own ingestion path.

7

An AUD-to-IDR remittance tracker that compares the live rate against a 30-day average and flags good windows to transfer money home, with a log of what was actually sent and what arrived.

8

The health surface is more than a step count: a day view, a weekly roll-up, resting and latest heart rate, body measurements over time, and nutrition synced from the same export.

Want the parts that aren’t on this page — the architecture arguments, the things that broke, a live walkthrough?

NEXTLocked In — Social Fitness App