Skip to content

Latest commit

Β 

History

108 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🀸 moveUP Mobile Fitness App

Mobile client for the moveUP fitness platform.

Dart Version Flutter Version


πŸ“š Table of Contents


πŸš€ Highlights

  • πŸƒ Fitness Start Onboarding: guest quiz, onboarding test catalog, guest test attempts, and completed-progress resume support before sign-up
  • πŸ” End-to-end Auth Flow: sign in, sign up, email verification, password recovery, OTP verification, password reset, and logout
  • πŸ“Ά Offline Flow: app-level connectivity tracking, blocking offline route, and automatic return to the auth flow after reconnect
  • ✨ Startup Splash Flow: branded startup entry route with router-driven splash timing before auth or offline redirects
  • πŸ›οΈ Clean Architecture in feature modules (Data β†’ Domain β†’ Presentation)
  • 🌐 Network Layer built on Dio + Retrofit
  • 🧭 Navigation with GoRouter, session-aware redirects, and startup/offline gating
  • 🎨 UIKit + Theming with shared buttons, dialogs, images, colors, gradients, and text styles
  • ⚠️ Error Handling via Result and typed Failure hierarchies
  • πŸ’‰ Dependency Injection with GetIt + Provider

πŸ“¦ Tech Stack

Category Technology
Framework Flutter 3.41.0+
State Management flutter_bloc
Dependency Injection get_it, provider
Navigation go_router
Connectivity Tracking connectivity_plus
HTTP Client dio + retrofit
Code Generation freezed, json_serializable, build_runner
Logging logger
Testing mockito, bloc_test, flutter_test
UI Components flutter_svg, cached_network_image

πŸ—οΈ Architecture

This app follows Clean Architecture principles:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Presentation Layer            β”‚
β”‚      (Pages, Widgets, BLoC/Cubit)       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
                    β”‚ uses
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             Domain Layer                β”‚
β”‚   (Entities, UseCases, Repositories*)   β”‚  * interfaces only
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
                    β”‚ implements
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Data Layer                 β”‚
β”‚  (DTOs, DataSources, Repositories Impl) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‚ Project Structure

lib/
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ constants/         # Shared app strings and asset references
β”‚   β”œβ”€β”€ di/                # Dependency injection
β”‚   β”œβ”€β”€ env/               # Envied-based environment config
β”‚   β”œβ”€β”€ failures/          # Feature and network failure types
β”‚   β”œβ”€β”€ network/           # Dio setup, interceptors, mappers, error DTOs
β”‚   β”œβ”€β”€ result/            # Result pattern
β”‚   β”œβ”€β”€ router/            # GoRouter config and route paths
β”‚   β”œβ”€β”€ services/          # Cross-feature services (network, token storage)
β”‚   └── utils/             # Logger and analytics utilities
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ app/               # App composition and root widget
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ data/          # DTOs, API client, repository implementation
β”‚   β”‚   β”œβ”€β”€ domain/        # Entities and repository contracts
β”‚   β”‚   └── presentation/  # Pages, widgets, cubits, validators
β”‚   β”œβ”€β”€ fitness_start/     # Guest onboarding quiz, tests shell, and onboarding flow UI
β”‚   β”œβ”€β”€ offline/           # Connectivity state and blocking offline flow
β”‚   β”œβ”€β”€ splash/            # Branded startup splash screen
β”‚   β”œβ”€β”€ tests/             # Shared tests catalog and guest test attempt flow
β”‚   └── debug/             # Internal debug screen
β”œβ”€β”€ uikit/
β”‚   β”œβ”€β”€ buttons/           # Shared buttons
β”‚   β”œβ”€β”€ dialogs/           # Shared dialogs
β”‚   β”œβ”€β”€ images/            # Shared image widgets
β”‚   └── themes/            # Color, gradient, and typography system
β”œβ”€β”€ main.dart              # Main entry point
└── runner.dart            # Bootstrap entrypoint

πŸ› οΈ Getting Started

Prerequisites

  • Flutter SDK: >=3.41.0
  • Dart SDK: >=3.11.0

Setup

  1. Create a local .env file in the project root.

    touch .env
  2. Fill in API_URL in .env.

  3. Install dependencies:

    flutter pub get
  4. Run code generation:

    flutter pub run build_runner build --delete-conflicting-outputs
  5. Run the app:

    flutter run

πŸ§ͺ Testing

Run tests:

# Unit tests
flutter test

# Widget tests
flutter test test/features/*/presentation/

# Coverage (requires lcov)
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html

End-to-end auth and Fitness Start validation still requires a local .env with a reachable API_URL.


πŸ“– Documentation

Generate API docs from Dart doc-comments:

dart doc --output doc/api

Serve docs locally:

dart pub global activate dhttpd
dart pub global run dhttpd --path doc/api

Then open:

http://localhost:8080

πŸ‹ Docker Build

Build Android APK using Docker:

docker build \                                                  
  --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
  --build-arg VCS_REF=$(git rev-parse --short HEAD) \
  --progress=plain \
  --no-cache \
  -t moveUP-app-android:latest .

Extract APK files:

docker create --name temp-flutter moveUP-app-android:latest
docker cp temp-flutter:/artifacts/. ./apk-output/
docker rm temp-flutter

πŸ“ Changelog

All notable changes to this project are documented in CHANGELOG.md.

About

Diploma project for Sibcode LLC πŸŽ“ Personalized training programs, tests, workload adaptation system and progress tracking statistics πŸ“Š

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages