Skip to content

About

A 100% offline, cyber-minimalist Android app for tracking fitness, nutrition, and weight. Built with Kotlin, Jetpack Compose, and Room.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Contributors Forks Stargazers Issues project_license LinkedIn


BaseLift Logo

BaseLift

An offline-first Android fitness and nutrition tracking app built with Jetpack Compose and Room.

Explore the Documentation »

Report Bug · Request Feature


Demo Video

demo.mp4

If the embedded video above is not displaying correctly, click here to watch/download the video demo »

Demo Note: The video demonstration and screenshots below showcase the application using mock data to illustrate historical charts, workout logs, and nutrition streaks. The profile picture and physique progress photos shown in the demo are purely representative and were generated with AI.

(back to top)


About BaseLift

A minimalist, offline-first fitness tracker built by a lifter, for lifters.

BaseLift centralizes workout tracking, nutrition journaling, and body metric analytics into a single private interface. All data stays securely on your device—no cloud sync, no accounts, no subscriptions. Designed as a distraction-free utility, it features a premium dark-mode aesthetic with satisfying micro-interactions.

Note: Developed as a personal project and final evaluation for the Mobile Applications Development (DAM) course at ISEL (Instituto Superior de Engenharia de Lisboa).

Onboarding & Setup

Intuitive flow to establish baseline metrics and custom macronutrient targets.

Build Profile
Profile Creation
Calculated Targets
Auto-Calculated Targets
Custom Targets
Custom Macro Overrides

Insights & Visual Diary

Visualize weight trends and track physique evolution with a private photo diary. Includes health metric calculators.

Weight Trend
Interactive Weight Chart
Ideal Weight Dialog
Ideal Weight Calculator
Visual Diary
Private Photo Journal

Nutrition Tracking

Effortless logging. Track detailed macros or use the Quick Add feature. Targets automatically recalibrate as your body weight changes.

Macro Targets
Daily Macro Breakdown
Quick Log
Quick Add Meals
Configure Meal
Configure Meal Template

Workouts & Training

Ultimate customization for exercises. Enjoy seamless progressive overload with previous set data displayed inline, custom rest timers, and drag-and-drop reordering.

Active Workout Logging
Active Workout Logging
Workout Timer
Custom Rest Timers
Edit Exercise
Edit Custom Exercises

Dashboard & Analytics

Monitor consistency with visual streaks, activity calendars, and granular volume tracking for routines and specific exercises.

Training Volume
Total Training Volume
Routine Volume Trend
Routine Progression
Exercise Details
Granular Exercise Details

Background Reminders

BaseLift safely tracks your ongoing session in the background.

  • Smart Notifications: If you leave the app or lock your phone with an active session, it issues a timely reminder.
  • Protect Your Streaks: Prevents you from forgetting to hit "Finalize Workout", ensuring your effort is always logged and your weekly streaks are never lost.
  • Data Accuracy: Keeps your total training duration and analytics perfectly precise.
Active Workout Notification
Smart Active Workout Reminder

Built With

  • Kotlin
  • Jetpack Compose
  • Android Studio
  • SQLite / Room

(back to top)


Key Features

  • 100% Offline & Private: Data is saved locally using Room SQLite. Instant load times, no internet required.
  • Unified Hub: Track calories, macros, and customized gym routines in one place.
  • Seamless Progressive Overload: Previous workout performance is displayed directly inside the current set row.
  • Automatic PR Detection: Highlights Personal Records for maximum weight and estimated 1RM.
  • Interactive Canvas Charts: Custom-built charts rendered directly in Jetpack Compose without external libraries.
  • Smart Target Recalibration: Automatically adjusts daily calorie and macronutrient goals based on weight updates.
  • Private Physique Journal: Progress photos with gesture zoom, kept separate from your phone's main camera roll.
  • Consistency Tracking: Weekly streaks and a unified historical calendar.
  • Premium UX: Haptic feedback, custom swipe-to-delete gestures, and fluid animations.

(back to top)


Technical Highlights & Lessons Learned

  • Modern Android Architecture: Built using the MVVM pattern with a clean Repository abstraction to isolate local database operations from the UI layer.
  • Reactive State Management: Implemented declarative UI flows in Jetpack Compose driven by Kotlin Coroutines, Flow, and StateFlow.
  • Comprehensive Testing Suite: Built over 70 unit and integration tests covering pure domain logic, Room DAOs, ViewModels (via Fake Repositories for ultra-fast JVM execution), and MockK for isolated complex rules (e.g., PR calculation).
  • AI-Assisted Test Automation: The testing suite was extensively authored with AI assistance. This served as a lesson in modern development: delegating repetitive test creation to AI is one of its most powerful use cases, guaranteeing massive edge-case coverage, enforcing strict logical patterns, and dramatically increasing development speed.
  • Relational SQLite Schema: Designed custom Room database entities, foreign key relationships, and migration paths for workouts, exercises, sets, and nutrition logs.
  • Custom Graphics Rendering: Developed interactive charts and progress visualizations from scratch using Jetpack Compose Canvas.
  • User Experience Planning: Designed an intuitive onboarding flow, clear navigation, and responsive layouts tailored for daily gym use.

(back to top)


Getting Started

Follow these steps to run a local copy of BaseLift on your machine.

Prerequisites

  • Android Studio: Hedgehog or newer
  • Java Development Kit (JDK): JDK 17 or higher (e.g., Amazon Corretto 17, Eclipse Temurin 17, or Android Studio Embedded JDK 17+)
  • Android SDK: API level 35 support

Installation & Running Locally

  1. Clone the repository:
    git clone https://github.com/GuilhermeGraca/baselift-android.git
  2. Open the project in Android Studio:
    • Open Android Studio and select Open an Existing Project.
    • Choose the cloned baselift-android directory.
    • Note on Gradle JDK: If Gradle sync fails with a Java version error, go to Settings/Preferences > Build, Execution, Deployment > Build Tools > Gradle and ensure the Gradle JDK is set to JDK 17 or higher (such as Amazon Corretto 17 or JetBrains Runtime 17).
  3. Run the application:
    • Allow Gradle to finish syncing the project dependencies.
    • Select an emulator or physical device running Android 7.0 (API level 24) or higher.
    • Click Run. No API keys or external server configurations are required.

(back to top)


Usage

  • Onboarding: Create your user profile by entering your age, gender, height, weight, activity level, and fitness goal to calculate daily calories and macros.
  • Workout Logging: Create custom routines, add exercises, and record sets, repetitions, and weight during your training session.
  • Nutrition Tracking: Log meals manually or use pre-configured meal templates to track daily calories and macronutrient intake.
  • Progress Insights: Check the Insights screen to review your weight progression chart and photo journal over time.

(back to top)


Contact

Guilherme Graça

(back to top)


Acknowledgments

  • ISEL — Instituto Superior de Engenharia de Lisboa: For institutional support and academic environment.
  • Mobile Applications Development (DAM) Course: For the technical foundation that supported the development of this project.

(back to top)

About

A 100% offline, cyber-minimalist Android app for tracking fitness, nutrition, and weight. Built with Kotlin, Jetpack Compose, and Room.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages