Thulaxshan SivarajahT. Sivarajah
Alle Projekte
App-Icon von Companion
iOS-App

Companion

Was ist es? Eine persönliche iPhone-App zum Abnehmen, mit eigener App für die Garmin-Uhr: Essen per Foto erfassen, den Verbrauch von der Uhr übernehmen und Krafttraining protokollieren.

Status
In Nutzung
Rolle
Idee, Konzept und Produktentscheidungen, getestet auf iPhone und Uhr (Code mit Claude Code)
Zeitraum
Seit Oktober 2026

So sieht es aus

Echte Screenshots der App und der Garmin-Uhr, mit Demodaten. Die Laufstrecke ist ein Beispiel.

  • Heute: Ein ehrliches Kalorienziel
    HeuteEin ehrliches KalorienzielDer Ring zeigt, wie viele Kalorien heute noch übrig sind. Das Ziel kommt aus den Daten der Garmin-Uhr und wird mit dem Gewichtstrend nachkalibriert.
  • Ernährung: Foto knipsen und senden
    ErnährungFoto knipsen und sendenClaude schätzt die Mahlzeit im Hintergrund und trägt sie direkt ein. Gezielte Rückfragen, etwa zum Öl in der Sauce, machen die Schätzung später genauer.
  • Gym: Krafttraining protokollieren
    GymKrafttraining protokollierenVorlagen mit den Werten vom letzten Mal, Pausentimer und Statistik. Auf der Garmin-Uhr läuft dasselbe Training als eigene App mit.
  • Garmin-Uhr: Eine eigene App für die Uhr
    Garmin-UhrEine eigene App für die UhrSelbst gebaut in Monkey C: Im Gym führt die Uhr-App Satz für Satz durch das Training aus der iPhone-Vorlage. Sie fragt morgens nach dem Gewicht und beantwortet Foto-Rückfragen am Handgelenk. Auf einen Blick zeigt sie die offenen Kalorien und das Protein.
  • Garmin-Uhr: Ein eigenes Zifferblatt
    Garmin-UhrEin eigenes ZifferblattDas Zifferblatt zeigt neben der Uhrzeit die noch offenen Kalorien als Bogen und das offene Protein. Die Werte kommen direkt vom iPhone.
  • Garmin: Läufe von der Uhr
    GarminLäufe von der UhrLäufe kommen automatisch von der Garmin-Uhr: Strecke auf der Karte, Pace, Puls und Kadenz, weiter unten Grafiken und Splits. Die aktiven Kalorien erhöhen das Tagesziel.
  • Teilen: Muskel-Karte nach dem Training
    TeilenMuskel-Karte nach dem TrainingNach dem Training zeigt eine Karte, welche Muskeln gearbeitet haben, mit Volumen, Sätzen und Bestleistungen. Als Sticker, Story oder Quadrat für Instagram.
  • Ernährung: Mahlzeit in einem Satz
    ErnährungMahlzeit in einem Satz«2 Stück Pizza und eine Cola 5 dl» wird Lebensmitteln aus der Datenbank samt Portion zugeordnet. Grün heisst aus der Datenbank, orange geschätzt.
  • Freunde: Gemeinsam dranbleiben
    FreundeGemeinsam dranbleibenKleine Gruppen über iCloud mit Tagesstatus, Streak und Anstupsen. Geteilt wird nur der Status, nie Kalorien, Essen oder Gewicht.

Warum ich sie gebaut habe

Ich will abnehmen. Dafür brauchte ich bisher mehrere Apps: eine für das Essen, Garmin Connect für Training und Verbrauch, eine fürs Gym. Keine hat diese Daten zu einem ehrlichen Kalorienziel zusammengeführt. Essen einzutragen war mir zu mühsam, vor allem bei Schweizer Lebensmitteln und auswärts. Ich wollte eine App, die das in wenigen Sekunden erledigt und den Verbrauch direkt von meiner Uhr nimmt. Langfristig soll Companion die anderen Gesundheits-Apps ganz ersetzen.

Was ich gebaut habe

  • Essen erfassen per Foto: knipsen und senden. Claude schätzt die Mahlzeit im Hintergrund und stellt bei Unklarheiten gezielt Rückfragen per Mitteilung. Alternativ: Mahlzeit in einem Satz beschreiben, Barcode scannen oder suchen.
  • Eine Lebensmittel-Suche, die offline funktioniert: Schweizer Nährwertdatenbank, Bundeslebensmittelschlüssel und eine Take-away-Liste, dazu Markenprodukte von Open Food Facts. Mengen wie «2 × Stück», Favoriten, Rezepte und «Wie gestern».
  • Ein Kalorienziel aus den Daten meiner Garmin-Uhr (Garmin Personal API, Apple Health als Ausweichquelle), nachkalibriert mit dem Gewichtstrend.
  • Einen Gym-Tracker mit Vorlagen, Werten vom letzten Mal, Pausentimer und Statistik.
  • Eine eigene App für die Garmin-Uhr (Connect IQ, Monkey C): Krafttraining Satz für Satz mit Gewicht, Wiederholungen und Pausentimer. Die Vorlagen kommen vom iPhone, das fertige Training geht zurück ins Gym-Log. Dazu Gewicht eintragen, Rückfragen zu Foto-Mahlzeiten beantworten und abends ein Protein-Check.
  • Ein eigenes Zifferblatt für die Uhr mit den offenen Kalorien und dem offenen Protein des Tages.
  • Eine Laufanalyse mit den Daten der Uhr: Strecke auf der Karte, Pace, Puls, Höhe und Kadenz als Grafiken, Splits und Bestzeiten. Dazu eine Schlafanalyse mit Schlafphasen und HRV.
  • Freunde: kleine Gruppen über iCloud mit Tagesstatus, Streak und Anstupsen. Geteilt wird nur der Status. Dazu teilbare Muskel-Karten für die Instagram-Story.
  • Läuft als Testversion über TestFlight, nicht im App Store.
Lebensmittel offline
8 000+
Übungen
876
automatische Tests
210
Apps für die Garmin-Uhr
2

Mehrwert

Eine App statt mehrerer: Essen, Training, Verbrauch und Gewicht ergeben zusammen ein Kalorienziel, das sich nach meinem echten Verlauf richtet. Eine Mahlzeit ist per Foto erfasst, ohne zu suchen und zu wiegen. Im Gym bleibt das Handy in der Tasche, weil die Uhr durch das Training führt.

Für Technikinteressierte

Stack, Architektur und Learnings
Stack
  • Swift
  • SwiftUI
  • SwiftData
  • HealthKit
  • CloudKit
  • WidgetKit
  • Claude API
  • Garmin Personal API
  • Connect IQ (Monkey C)
  • Claude Code

Architektur

  • Native iPhone-App in SwiftUI und SwiftData für iOS 18, rund 21 000 Zeilen Swift in 116 Dateien. Dazu eine Widget-Erweiterung für Sperrbildschirm und Kontrollzentrum.
  • Garmin-Uhr: zwei Connect-IQ-Projekte in Monkey C (rund 2 000 Zeilen), ein Zifferblatt und eine Uhr-App mit Gym-Tracker, Gewicht und Foto-Rückfragen. Verbunden mit dem iPhone über das Connect IQ Mobile SDK.
  • Foto-Erfassung: Das Foto wird auf 1 568 px verkleinert und ohne EXIF-Daten an die Claude API geschickt. Die Antwort kommt als strukturierte Daten nach festem Schema, die Nährwerte rechnet die App selbst aus. Der Upload läuft über eine Hintergrund-Session weiter, auch wenn die App geschlossen ist.
  • Kalorienziel: Garmin-Tageswerte (Ruhe- und Aktivkalorien), kalibriert mit Gewichtstrend und gegessenen Kalorien, ähnlich wie bei MacroFactor. Das Defizit geht nie unter den Grundumsatz.
  • Lebensmittel offline: Schweizer Nährwertdatenbank (1 246 Einträge) und Bundeslebensmittelschlüssel 4.0 (6 937 Einträge) liegen in der App. Markenprodukte kommen von Open Food Facts.
  • Daten lokal mit SwiftData, Freunde-Gruppen über CloudKit, API-Schlüssel im Schlüsselbund.
  • Tests: 210 automatische Tests.

Learnings

  • Bei Garmin Connect IQ heisst «gesendet» nur, dass Garmin Connect die Nachricht erhalten hat. Damit kein Gewichtseintrag verloren geht, bestätigt das iPhone jede Nachricht, und die Uhr sendet sie erneut, bis die Bestätigung da ist.
  • Beim Erfassen von Essen spart Reibung mehr Zeit als Genauigkeit: Mengen wie «2 × Stück» und «Wie gestern» bringen mehr als eine noch genauere Datenbank.

Status

In NutzungSeit Oktober 2026