An offline-first Android fitness and nutrition tracking app built with Jetpack Compose and Room.
Explore the Documentation »
Report Bug
·
Request Feature
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.
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).
Intuitive flow to establish baseline metrics and custom macronutrient targets.
Visualize weight trends and track physique evolution with a private photo diary. Includes health metric calculators.
Effortless logging. Track detailed macros or use the Quick Add feature. Targets automatically recalibrate as your body weight changes.
Ultimate customization for exercises. Enjoy seamless progressive overload with previous set data displayed inline, custom rest timers, and drag-and-drop reordering.
Monitor consistency with visual streaks, activity calendars, and granular volume tracking for routines and specific exercises.
- 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.
- 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.
Follow these steps to run a local copy of BaseLift on your machine.
- 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
- Clone the repository:
git clone https://github.com/GuilhermeGraca/baselift-android.git
- Open the project in Android Studio:
- Open Android Studio and select Open an Existing Project.
- Choose the cloned
baselift-androiddirectory. - 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).
- 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.
- 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.
Guilherme Graça
- LinkedIn: guilherme-graça
- GitHub: @GuilhermeGraca
- Project Link: https://github.com/GuilhermeGraca/baselift-android
- 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.















