BistroCafe is a versatile and user-friendly mobile application designed to streamline the cafe experience for both customers and cafe owners. With distinct roles for users and cafe owners, BistroCafe aims to enhance the order management process and provide a seamless interaction platform.
These features will be included in both User and Cafe Owner Roles.
-
Themes
- Dark Mode
- Light Mode
-
Profile Management
- Change Information
- Change Password
-
General Settings
- About Us [Option]
- Privacy [Option]
- Bug Reporting [Option]
- Credits [Option]
These features will only be included in User Role.
- Menu Item Display
- Whole Menu Display
- Category wise Menu Display
- Cart Screen with Item quantity Increase and Decrease
- Dine In and Dine Out Feature
- Cash on Delivery and Onlne Mode of Payment Feature
- Order Tracking with
- Order History
- Curated Notifications on Order update
- Deactivate Account
These features will only be included in Cafe Owner Role.
-
4 stages of Order Management
- Requested Orders
- Unpaid Orders
- Current Orders
- Past Orders
-
Notifications regarding new Orders
-
Analytics
- Daily Analytics
- Monthly Analytics
- Product Monthly Analytics
-
Menu Items
- Add New Menu Item
- View Available Menu Items
- Update Menu Item availibility [on the go].
- Modify Details of Menu Items
-
Cafe Management
- Store Timings
- Store availibility
-
Security
- Email Verification (For both Cafe Owner and User Role).
- Allows only Authenticated Emails to use the application.
-
State Persistence
- Includes Authentication State Persistence.
- Includes various states for persistence to route the user to the same screen, left before at the time of verification.
-
Cart Local State [For User Role]
- Maintains a Cart Local state (HashMap) to store Item IDs and their respective quantities.
- This is done to minimise reads and writes and also to provide better User experience while increasing and decresing an item's quantity.
-
Billing Checkout checks
- Checks if the timing is in Business hour range set by the store owner.
- Checks the availibity of the store.
-
Messaging Functionality
- Notifies the user about his/her order on at evry stage.
- Also notifies the Cafe Owner about the new requested order.
- Uses Dio (https client) to send API request to the Firebase Cloud Messaging server.
- Flutter
- Firebase
- Firebase Authentication
- Firestore
- Cloud Storage
- Firebase Cloud Messaging
- Bloc (Business Logic Component) - Cubits Extension
- Dio
-
cupertino_icons: ^1.0.2
- Flutter's built-in Cupertino icons. Provides iOS-style icons for your app.
-
flutter_bloc: ^8.1.3
- Implements the BLoC (Business Logic Component) pattern for state management in Flutter.
-
flutter_screenutil: ^5.8.4
- A Flutter plugin for adapting screen and font size to different devices.
-
flutter_svg: ^2.0.7
- Allows rendering SVG files as Flutter widgets.
-
google_nav_bar: ^5.0.6
- A customizable bottom navigation bar with a Google Material Design style.
-
firebase_auth: ^4.7.3
- Flutter plugin for Firebase Authentication. Handles user sign-in and sign-up.
-
firebase_core: ^2.15.1
- Flutter plugin for Firebase Core. Initializes Firebase for your Flutter app.
-
cloud_firestore: ^4.15.4
- Flutter plugin for Cloud Firestore. Enables communication with Firebase Firestore.
-
dotted_border: ^2.0.0+3
- A Flutter package to create dotted borders around widgets.
-
image_picker: ^1.0.4
- Allows picking images from the image library or taking new pictures with the camera.
-
firebase_storage: ^11.2.6
- Flutter plugin for Firebase Cloud Storage. Handles storage and retrieval of files.
-
intl: ^0.19.0
- Flutter package for internationalization and localization.
-
firebase_messaging: ^14.7.15
- Flutter plugin for Firebase Cloud Messaging. Handles push notifications.
-
flutter_local_notifications: ^16.3.2
- A Flutter plugin to display local notifications.
-
app_settings: ^5.1.1
- A Flutter package to open the device settings for the app.
-
shared_preferences: ^2.2.1
- Flutter plugin for reading and writing simple key-value pairs to persistent storage.
-
email_validator: ^2.1.17
- A Dart package for validating email addresses.
-
dio: ^5.4.0
- A powerful Dart HTTP client for making RESTful API calls.
-
pretty_dio_logger: ^1.3.1
- A Dio interceptor for logging HTTP requests and responses in a readable format.
-
cached_network_image: ^3.3.1
- Flutter package for caching and displaying network images.
-
connectivity_plus: ^5.0.2
- Flutter plugin for monitoring and accessing network connectivity.
- Repository Pattern
- Observer Pattern
- Dependency Injection or Service Locator Pattern
- Clean Architechture
- Seperated Repositories, Cubits and Presentation.
- Repository for direct communication for a particular functionality with database.
- Cubits to manage the Presentation layer with the data layer.
- Presentation contains all the frontend of the application.
Install my-project with npm
-
Clone the Repository
git clone https://github.com/your-username/your-repo.git
-
Navigate to the Project Directory
cd your-repo
- Install Flutter Dependencies
fvm install
fvm use
- Install Project Dependencies
flutter pub get
-
Configure Firebase If you're using Firebase for Android, make sure to include the google-services.json file in the android/app folder.
-
Run the Application Run the Flutter Application
flutter run
Note Ensure that all the dependencies mentioned in the pubspec.yaml file are correctly installed.
- Browse through the available items and select the ones you want to order.
- Add the selected items to your cart by tapping on them.
- Proceed to the "Cart" section to review your order.
- If satisfied, click on the "Proceed" button.
- Choose the necessary details such as Dine-in or Dine-out options or COD or Online Payments.
- Place the order to complete the process.
- Access the "Your Orders" section in the side drawer of the application.
- View the list of incoming/requested orders.
- Process each order by updating its status (requested, unpaid, current, prepared).
- Use the app's features to mark orders as paid or completed.
- Navigate to the "Add Menu Items" section in the side drawer of the application.
- Add new items to the menu.
- Specify details such as item name, category, price, etc.
- Save the changes to to upload the new menu item.
- Access the "Analytics" section in Home Screen.
- Review sales data, including popular items and revenue.
- Use the insights to make informed business decisions.
Thank you for exploring my application! I hope you find it intuitive and helpful in solving real-life problems for both users and cafe owners. Your feedback and contributions are incredibly valuable to me.
If you encounter any issues, have suggestions for improvement, or want to contribute to the project, feel free to open an issue) or create a pull request. I appreciate your support in making this project better.
If you find this project helpful, consider giving it a star on GitHub or becoming a sponsor. Your support encourages me to continue enhancing and maintaining the application.
I would like to express my gratitude to the contributors, library maintainers, and the open-source community for their continuous support. Together, we can make a positive impact.
Happy coding!
@itsvinayyay