LiftLog
🚀 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!
Want to help translate? Create an account on Weblate!
⚡ Quickstart
Prerequisites
- Node.js (v18+): Download here
- Expo CLI:
npm install -g expo-cli(Guide) - Android Studio (for Android) (Setup)
- 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
🤝 Contributing
Contributions, issues, and feature requests are welcome! See CONTRIBUTING.md (or open an issue/PR).
AI/LLM-assisted contributions are welcome, but issues and feature requests should be written in your own words - see the AI Usage Policy.
📚 Documentation
- Plan Files - Documents the
.liftlogplanfile format, and how to generate plans with an AI for import into the app. - 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
dotnetbranch.

