MCPcopy Index your code
hub / github.com/LiamMorrow/LiftLog

github.com/LiamMorrow/LiftLog @4.12.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 4.12.0 ↗ · + Follow
5,080 symbols 8,938 edges 1,350 files 2,186 documented · 43%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

LiftLog

App home page screenshot Workout page screenshot Stats page screenshot

Get it on Google Play Download on the App Store Get it on Obtainium


🚀 Overview

LiftLog is an intuitive, cross-platform gym weight tracking app built with React Native and Expo. It features Material Design 3, AI-powered workout planning, and secure, end-to-end encrypted social feeds. Available on Android and iOS.

Key Features

  • 🗿 Intuitive UI which lets you log your progression, without getting in your way
  • Entirely device local workouts, no waiting for sign in or downloads
  • 📱 Runs on Android and iOS. Web support was removed in this commit
  • 🔒 End-to-end encrypted social feeds (opt-in, privacy-first)
  • 🎨 Material Design 3 via React Native Paper
  • 🌐 Internationalization with Tolgee/Weblate (10+ languages)
  • 🏋️‍♂️ Publish workouts, follow other users, and control your feed privacy
  • 🧠 AI planner tailors gym plans to your goals and body
  • ⚡ Fast, modern UI with Expo Router and Redux Toolkit

🌍 Translations

LiftLog uses Weblate for internationalization and translation management. Anyone can create an account and start translating!

Translation status

Want to help translate? Create an account on Weblate!


⚡ Quickstart

Prerequisites

  1. Node.js (v18+): Download here
  2. Expo CLI: npm install -g expo-cli (Guide)
  3. Android Studio (for Android) (Setup)
  4. Xcode (for iOS, macOS only) (Setup)

Run the App

cd app
npm install
npm run android   # For Android
npm run ios       # For iOS (macOS only)

Run the Backend API

See backend/README.md for more information on running the backend.


🗂️ Project Structure

LiftLog is organized into several projects:

Frontend (app/)

  • Main React Native app (Expo)
  • Components: components/ (layout, presentation, smart)
  • State: store/ (Redux Toolkit)
  • Services: services/ (API, business logic)
  • Hooks: hooks/ (custom React hooks)
  • Translations: i18n/ (Tolgee)
  • Navigation: Expo Router

Backend (LiftLog.Api/)

For documentation on running the backend for local development, see the README

  • Dotnet WebAPI for feeds, AI plans, and secure data
  • End-to-end encrypted feeds (AES)
  • Claude integration for workout plans

RevenueCat (RevenueCat/)

  • Client library for in-app purchases/subscriptions

Website (site/)

  • Source for liftlog.online and privacy policy

📊 Stats

Star History Chart


🤝 Contributing

Contributions, issues, and feature requests are welcome! See CONTRIBUTING.md (or open an issue/PR).

📚 Documentation

  • Feed Process - Documents how the feed and sharing works, especially around e2e encryption.
  • Remote Backup - Documents how to connect LiftLog to a remote backup server.
  • Plaintext Export - Documents how to export your data as plaintext.
  • Workout Worker - Documents the WorkoutWorker, an event based bridge between native and JS which powers the Android persistent notifications.
  • Storage Migrations - Documents how on-device data is versioned and migrated, and what to do when changing a stored model.

💬 Support & Community


Note: LiftLog was rewritten from the ground up in React Native. The previous .NET MAUI Blazor implementation is in the dotnet branch.

Extension points exported contracts — how you extend this code

ToJSON (Interface)
(no doc) [31 implementers]
app/src/models/storage/conversions.spec.ts
IAnthropicMessageStreamer (Interface)
Thin seam over 's streaming message API. Exists so the planner's streaming logic
backend/LiftLog.Api/Service/IAnthropicMessageStreamer.cs
WorkoutMessageHandler (Interface)
* Interface for handling specific workout event types. * Each implementation is responsible for a single event type. *
app/modules/workout-worker/android/src/main/java/expo/modules/workoutworker/handlers/WorkoutMessageHandler.kt
IEncryptionService (Interface)
(no doc)
backend/LiftLog.Lib/Services/IEncryptionService.cs
Chainable (Interface)
(no doc)
tests/cypress-tests/cypress/support/index.d.ts
FromJSON (Interface)
(no doc) [31 implementers]
app/src/models/storage/conversions.spec.ts
IChatClientV2 (Interface)
(no doc)
backend/LiftLog.Api/Hubs/AiWorkoutChatHubV2.cs
ISessionHistoryDaoV2 (Interface)
Properties of a SessionHistoryDaoV2. [1 implementers]
app/src/gen/proto.d.ts

Core symbols most depended-on inside this repo

dispatch
called by 322
app/src/utils/__test__/add-effect-testbed.ts
with
called by 227
app/src/models/weight.ts
toJSON
called by 155
app/src/models/storage/conversions.spec.ts
getByTestId
called by 115
tests/cypress-tests/cypress/support/index.d.ts
create
called by 113
app/src/services/hub-connection-factory.ts
addEffect
called by 93
app/src/store/store.ts
toBigNumberJSON
called by 92
app/src/models/storage/versions/libs/index.ts
toString
called by 92
app/src/models/blueprint-models/index.ts

Shape

Method 2,425
Function 1,128
Class 850
Enum 394
Interface 283

Languages

C#61%
TypeScript37%
Kotlin1%

Modules by API surface

app/src/gen/proto.d.ts155 symbols
app/src/models/feed-models.ts118 symbols
app/src/models/blueprint-models/index.ts92 symbols
app/src/gen/proto.js51 symbols
app/src/services/preference-service.ts48 symbols
app/src/models/storage/versions/libs/index.ts42 symbols
app/src/models/session-models/recorded-weighted-exercise.ts40 symbols
app/src/models/blueprint-diff.ts39 symbols
app/src/models/storage/versions/initial/protobuf-migrator.ts38 symbols
app/src/models/session-models/session.ts30 symbols
app/src/models/session-models/recorded-cardio-exercise.ts27 symbols
app/src/store/settings/index.ts23 symbols

For agents

$ claude mcp add LiftLog \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact