A feature-packed mobile application designed to streamline grocery shopping, integrated with modern location services and optimized for efficiency.
- Account Management: Manage your account information, change passwords, and keep your profile up-to-date.
- Authentication: Secure login and registration with email/password and phone number OTP verification.
- Shopping Cart: Easily add and manage items in your cart, and the checkout process will be smooth.
- Explore & Favorites: Browse and discover grocery items, and save favorites for easy access.
- Order Tracking: View and manage your orders with detailed tracking information.
- Location Services: Use Google Maps and Geolocation to detect your location. The API key is stored securely in a
.envfile. - Search: Use a floating search bar to find products efficiently.
- Reviews: Read and leave reviews, with user-specific options to edit them.
- Payment Handling: Use
webview_flutterfor secure payment processing with integration for Paymob.
- Frontend: Built with Flutter
- State Management: Bloc for efficient state management
- Location: Google Maps and Geolocator for real-time location services
- Network: Dio with Retrofit for API handling and Pretty Dio Logger for logging
- Caching: Cached Network Image for efficient image loading
- Backend: Dart Frog for backend services
Here are the key packages used in the project:
- State Management:
flutter_bloc,bloc,equatable - Networking:
dio,retrofit,pretty_dio_logger,dartzfor functional programming - Location & Maps:
google_maps_flutter,geolocator - UI Enhancements:
flutter_native_splash,flutter_svg,carousel_slider,shimmer,lottie,blur,material_floating_search_bar_2 - Form Handling:
form_validator,intl_phone_number_input,pinput - Storage:
shared_preferencesfor local storage,flutter_dotenvfor environment variables - Miscellaneous:
uuid,provider,timeline_tile,flutter_rating_bar,image_picker,fluttertoast,readmore,dart_jsonwebtoken,intl,webview_flutter
-
Clone the repository:
git clone https://github.com/AbdoWa7eed/groceries_app.git
-
Navigate to the project directory:
cd groceries_app -
Install dependencies:
flutter pub get
-
Set up API Keys:
-
Create a
.envfile in the project root and add your Google Maps API key:GOOGLE_MAPS_API_KEY=your_api_key_here
-
-
Configure Backend URL:
-
The app works on the hostname
192.168.1.19and port8080 -
If you want to change it, modify the
baseUrlvariable in thelib/core/network/api_constants.dartfile from:static const String baseUrl = "http://192.168.1.19:8080/";
-
Set it to the hostname and port where your backend is running.
-
-
Run the app:
flutter run
lib/
│
├── core/ # Core utilities and helpers
├── features/ # All features organized in subdirectories
├── app.dart # Main app widget
├── bloc_observer.dart # Bloc observer for debugging
└── main.dart # Entry point of the app
The app communicates with a Dart Frog backend. You can find the backend repository here.
groceries_app.mp4
We welcome contributions! Fork the repository, make your changes, and submit a pull request.
For any inquiries or support, please reach out to Abdelrahman Waheed.