CareComm Task is a cross-platform product listing application built using Flutter. The app allows users to browse products, view details, and manage their favorite items. It is designed with a responsive layout to support mobile, tablet, and desktop screens seamlessly.
- Flutter: version 3.27.2
- Dart: version 3.6.1
- flutter_bloc - State management.
- hydrated_bloc - Persistent flutter bloc state management after app closed.
- get_it - Service locator for dependency injection.
- http - A powerful HTTP client for making network requests.
- http_mock_adapter - A Dio adapter for mocking API responses in tests.
- auto_route - Declarative and type-safe routing for Flutter.
- auto_route_generator - Code generation for auto_route.
- shared_preferences - Persistent key-value storage.
- path_provider - Provides access to commonly used storage locations.
- fast_cached_network_image - Efficient caching for network images.
- flutter_screenutil - Adaptive screen sizing for different devices.
- skeletonizer - Adds skeleton loading effects to UI components.
- mockito - Mocking framework for unit testing.
- bloc_test - Unit testing utilities for BLoC.
- build_runner - Code generation tool for Flutter.
- Product Listing: Displays a list of products with a smooth UI.
- Favorites Management: Users can mark products as favorites for quick access.
- Adaptive UI: The app adjusts its layout based on the screen size (Responsive design for mobile, tablet, and desktop).
- State Management: Powered by Flutter BLoC for efficient data handling.
- Dark Mode Support: Toggle between light and dark themes dynamically.
- Navigation: Implemented using AutoRoute for seamless routing across screens.
- Supports both Web and Mobile platforms
- VS code
- Android Studio
- Android APK: Download from Google Drive (may be not updated)
- Latest Build (Mobile APK) Download or Generate Latest from GitHub Actions Artifacts: Workflow Link
- Web Version: Open on GitHub Pages
To get a local copy up and running, follow these instructions.
Prerequisites
- Flutter SDK: Ensure Flutter is installed on your system. Follow Flutter installation guide
- Android Studio or Visual Studio Code for development and testing.
- clone the repository
- Ensure your device's Internet connection is enabled.
- and run the app on any plugged physical device, emulator or web browser.
# Clone the repository
git clone https://github.com/Mohamed-said-salah/cross_platform_carecomm_assessment.git
cd cross_platform_carecomm_assessment
# Install dependencies
flutter pub get
# Run the application on an physical Android device, emulator, or web browswer
flutter run
# Build the APK
flutter build apk --release
To ensure the project functions correctly, you can run the unit and widget tests using the following commands:
# Run all tests
flutter test
# Run tests with coverage report
flutter test --coverage
.
βββ lib/
βββ core/
β βββ router/
β β βββ app_router.dart
β βββ services/
β β βββ cache_manager.dart
β β βββ favorites_caching_service.dart
β βββ theme/
β β βββ app_colors.dart
β β βββ responsive_manager.dart
β β βββ text_styles.dart
β βββ constants.dart
β βββ di.dart
βββ data/
β βββ models/
β β βββ product_model.dart
β βββ repos/
β βββ products_repo.dart
βββ logic/
β βββ bloc
β βββ cubit/
β β βββ theme_cubit.dart
β β βββ products_cubit.dart
β β βββ products_state.dart
β β βββ favorites_cubit.dart
β β βββ favorites_state.dart
β βββ controllers
βββ views/
β βββ components/
β β βββ buttons/
β β β βββ animated_theme_switcher.dart
β β β βββ product_favorite_button.dart
β β βββ cards/
β β β βββ product_card.dart
β β βββ spaces/
β β β βββ horizontal_space.dart
β β β βββ vertical_space.dart
β β βββ tiles/
β β β βββ product_tile.dart
β β βββ product_image.dart
β βββ screens/
β βββ home/
β β βββ home_screen.dart
β β βββ products_tab.dart
β β βββ favorites_tab.dart
β βββ product_details_screen.dart
βββ app.dart
βββ main.dart
dark mode