FitTrack is an Android workout logging and exercise analytics app for tracking gym progress over time. It helps users record training sessions, review history, and stay motivated with dynamic content.
| Name | Roll Number |
|---|---|
| Maidah Nasir | 23F-0764 |
| Syed Muhammad | 23F-0559 |
| Zonia Amer | 23F-0801 |
| Zahid Khalil | 22F-3573 |
- Sign in with a username and enter the main app experience.
- Navigate between dashboard, workout history, and motivation screens without restarting the activity.
- View workout sessions in a vertical list powered by
RecyclerView. - Add, edit, and delete workout sessions that persist locally.
- Search workout history in real time (case-insensitive) and clear filters instantly.
- Browse motivational quotes fetched from a live public API.
LoginActivitycollects the username.- Username is passed to
MainActivitythroughIntentextra (EXTRA_USERNAME). MainActivityacts as a container and switches fragments insideR.id.fragment_container.- User context is passed from activity to fragments through bundle arguments (
ARG_USERNAME).
- Uses
SQLiteOpenHelperfor local persistence. - Stores users, workout sessions, and exercise data with relational links.
- Supports full CRUD operations for workout sessions.
- Data remains available after app restarts.
- Uses Retrofit + Gson to fetch quote data from a public endpoint.
- Displays API responses in
RecyclerViewon the motivation screen. - Network calls run on background threads using Kotlin coroutines.
- Workout history supports live filtering by workout name.
- Filtering is handled in the adapter using an original list + filtered list pattern.
- A clear action resets results to the full dataset.
- Language: Kotlin
- UI: XML layouts (Android Views)
- Navigation Pattern: Fragment-first (activities as top-level containers)
- Lists:
RecyclerView+ customAdapter+ViewHolder - Persistence: SQLite via
SQLiteOpenHelper - Networking: Retrofit + Gson
- Build: Gradle (Kotlin DSL)
FitTrack/
app/
src/main/
java/com/fittrack/app/
activities/
fragments/
adapters/
models/
data/
res/
layout/
drawable/
values/
- JDK 17
- Android Studio (latest stable recommended)
- Android SDK installed
.\gradlew.bat :app:assembleDebug
.\gradlew.bat :app:testDebugUnitTest
.\gradlew.bat :app:connectedDebugAndroidTest
.\gradlew.bat :app:lintDebug- Reuse existing style tokens from
app/src/main/res/values/colors.xmlandapp/src/main/res/values/dimens.xml. - Keep XML-based layouts consistent with existing component styling.
- Use explicit view IDs following current patterns (
tv...,btn...,et...,rv...).
- Expand exercise catalog and set-level logging.
- Add richer analytics for training volume and performance trends.
- Introduce optional offline caching for remote motivation content.
- Improve validation, error feedback, and test coverage.
This project is developed for academic purposes.