# 🍔 Faredo Food - Flutter Food Delivery App A modern and elegant food delivery application built with Flutter, featuring a clean UI design and smooth user experience for ordering food online. ## 📱 Features ### Core Features - **Browse Food Categories**: Pizza, Burger, and Pasta with dedicated filtering - **Food Details**: Comprehensive food information with images, prices, and descriptions - **Favorites System**: Add/remove items to/from favorites with persistent state - **Responsive Design**: Optimized for both portrait and landscape orientations - **Navigation**: Bottom navigation bar with Home, Favorites, and Account sections - **Side Drawer**: Quick access to different app sections ### User Interface - **Material Design**: Clean and modern UI following Material Design principles - **Custom Theming**: Consistent orange color scheme throughout the app - **Interactive Elements**: Smooth animations and transitions - **Grid Layout**: Responsive food item grid with proper spacing - **Custom Widgets**: Reusable components for consistent design ## 🏗️ Project Structure ``` lib/ ├── models/ │ ├── catigery_item.dart # Category model and data │ └── food_item.dart # Food item model and sample data ├── pages/ │ ├── account.dart # User account page │ ├── bottom_navbar.dart # Main navigation structure │ ├── favourite_page.dart # Favorites management │ ├── food_details_page.dart # Detailed food information │ └── home_page.dart # Main home screen ├── ui_models/ │ └── food_details_arg.dart # Navigation arguments ├── utilities/ │ └── app_assets.dart # Asset path constants ├── widgets/ │ ├── custom_botton.dart # Reusable button component │ ├── favourit_bottom.dart # Favorite toggle button │ ├── food_grid_item.dart # Food item card component │ ├── return_back_botton.dart # Back navigation button │ └── food_details_page/ │ ├── food_counter.dart # Quantity counter widget │ └── properties.dart # Food properties display └── main.dart # App entry point ``` ## 📊 Data Models ### FoodItem ```dart class FoodItem { final String name; final String url; final double price; final bool isfavourite; final int categoryid; final String id; } ``` ### CategoryItem ```dart class CatigeryItem { final String title; final String path; final int id; } ``` ## 🚀 Getting Started ### Prerequisites - Flutter SDK (3.0.0 or higher) - Dart SDK (2.17.0 or higher) - Android Studio / VS Code - Android/iOS device or emulator ### Installation #### Option 1: Download APK (Recommended for testing) 1. **Download the latest release** - Go to: [Download APK](https://github.com/Abdelrahman-farid/food_delivery_app/releases/download/v1.0/app-release.apk) - Install on your Android device - Enable "Install from unknown sources" if prompted #### Option 2: Build from source 1. **Clone the repository** ```bash git clone https://github.com/Abdelrahman-farid/food_delivery_app.git cd food_delivery_app ``` 2. **Install dependencies** ```bash flutter pub get ``` 3. **Add required assets** Create the following asset structure: ``` assets/ ├── images/ │ ├── boody.jpg # User profile image │ ├── empty_state.png # Empty state illustration │ ├── classic_burger.jpg # Hero banner image │ └── categiries/ │ ├── burger.png # Burger category icon │ ├── pizza.png # Pizza category icon │ └── pasta.png # Pasta category icon ``` 4. **Update pubspec.yaml** ```yaml flutter: assets: - assets/images/ - assets/images/categiries/ fonts: - family: Blackhole fonts: - asset: assets/fonts/Blackhole.ttf ``` 5. **Run the application** ```bash flutter run ``` ## 🎨 Design System ### Color Palette - **Primary Color**: Deep Orange (`Colors.deepOrange`) - **Secondary Colors**: Orange variants for gradients - **Background**: White with light grey accents - **Text**: Black with grey variants for secondary text ### Typography - **Brand Font**: Blackhole (for app title and branding) - **Body Font**: System default (Roboto on Android, San Francisco on iOS) ### Components - **Rounded Corners**: 16dp border radius for cards and buttons - **Shadows**: Subtle Material Design shadows - **Spacing**: Consistent 16dp padding system ## 📱 App Screens ### Home Screen - Hero banner with featured food image - Horizontal category selector - Food items grid with filtering capability - Bottom navigation bar ### Food Details - Expandable app bar with food image - Food name, price, and description - Quantity selector - Properties display (Size, Calories, Cooking time) - Checkout button ### Favorites - List of favorited food items - Empty state with illustration - Quick access to food details - Remove from favorites functionality ### Account - User profile information - Order and voucher statistics - Quick access to past orders and vouchers - Settings navigation ## 🔧 Key Features Implementation ### Navigation - Bottom navigation with 3 tabs - Named routes for deep linking - Proper argument passing between screens ### State Management - StatefulWidget for local state management - Shared food data across screens - Favorite state persistence during app session ### Responsive Design - Orientation-aware layouts - Dynamic sizing based on screen dimensions - Adaptive grid columns for different screen sizes ### Custom Widgets - Reusable button components - Modular food item cards - Consistent favorite toggle button ## 🛠️ Technical Details ### Dependencies - **flutter**: Framework - **material**: Material Design components ### Architecture - Widget-based architecture - Separation of concerns with models, pages, and widgets - Reusable component library ### Asset Management - Organized asset structure - Centralized asset path management - Network image loading with fallbacks ## 🚧 Known Limitations 1. **Data Persistence**: Favorites reset on app restart 2. **Network Handling**: No error handling for network images 3. **Authentication**: No user authentication system 4. **Cart Functionality**: Limited cart implementation 5. **Payment Integration**: No payment gateway integration ## 🔮 Future Enhancements - [ ] User authentication and profiles - [ ] Cart management with quantity updates - [ ] Order history and tracking - [ ] Payment gateway integration - [ ] Push notifications - [ ] Search functionality - [ ] User reviews and ratings - [ ] Location-based delivery - [ ] Dark mode support - [ ] Offline capability ## 🤝 Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/AmazingFeature`) 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request ### Bug Reports & Feature Requests - Create an issue on [GitHub Issues](https://github.com/Abdelrahman-farid/food_delivery_app/issues) - For questions, reach out via email: abofareed133@gmail.com ## 📄 License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## 👨‍💻 Author **Abdelrahman Farid** - Email: abofareed133@gmail.com - GitHub: [@Abdelrahman-farid](https://github.com/Abdelrahman-farid) ## 📞 Contact & Support For any questions, suggestions, or issues: - 📧 Email: abofareed133@gmail.com - 🐛 Issues: [GitHub Issues](https://github.com/Abdelrahman-farid/food_delivery_app/issues) - 💬 Discussions: [GitHub Discussions](https://github.com/Abdelrahman-farid/food_delivery_app/discussions) ## 🙏 Acknowledgments - Flutter team for the amazing framework - Material Design for the design system - Food images from various sources (ensure proper licensing) - Icons and illustrations from the design community --- **Note**: This is a demo application for learning purposes. For production use, implement proper state management, error handling, and security measures.