This app is built with Flutter and implements the listed features, including using the BLoC pattern for state management. The goal is to demonstrate the flow of the app, with a focus on the "My Collection" and "Details" templates.
- User Authentication: Secure sign-in and sign-up process using email and password.
- Whisky Collection: Browse a collection of whiskies and view detailed information about each one.
- Tasting Notes: Add and manage tasting notes for each whisky (Nose, Palate, and Finish).
- Offline Support: Data is stored locally in the app, and will refresh after fetching when the internet connection is available.
- State Management: BLoC pattern used for managing the app's state.
- Figma: Whisky_app_design
- Flutter: Used for building the mobile application.
- BLoC: For state management using the BLoC pattern.
- JSON Files: Mockup data in JSON format instead of a REST API.
- Git: Version control system used for this project.
Here are the libraries and packages used in this project along with the reasons for their inclusion:
-
google_fonts
This package is used to easily integrate Google Fonts into the app. It helps to enhance the visual appearance and provide a wider range of font options for a better UI/UX. -
flutter_bloc
This package is used for managing state in the app using the BLoC pattern. BLoC (Business Logic Component) helps separate business logic from UI, making the code more modular, testable, and maintainable. -
get_it
get_itis a service locator for Dart and Flutter. It is used to manage app dependencies in a simple and easy-to-use manner, especially for dependency injection. It is used to access BLoC instances and other services in the app. -
localstore
This package is used to store data locally in the app. In this project, it is used to save the whisky collection data and tasting notes. It provides a simple key-value storage solution that works well in Flutter. -
connectivity_plus
connectivity_plusis used to check the network status (whether the app is online or offline). This package is essential for determining if the app should fetch new data from a remote source or work with locally stored data. -
flutter_svg
This package is used for rendering SVG images in the app. It is used to display icons and illustrations in the app that are in SVG format, providing scalable and high-quality graphics.
-
Flutter: Ensure Flutter is installed on your machine. You can find installation instructions on the Flutter website.
-
Packages: The app uses a few packages from pub.dev, which will be installed when running the app for the first time.
-
Clone the repository:
git clone <repository_url>
-
Navigate to the project directory:
cd whisky_app -
Install dependencies:
flutter pub get
-
Run the app:
flutter run
- Sign In: The user can sign in using their email and password (john@mail.com, password123).
- Browse Whisky: Users can browse the whisky collection and see detailed information.
- Add Tasting Notes: Users can add tasting notes for each whisky (Nose, Palate, and Finish).
- Offline Support: If no internet connection is available, the app will use the previously fetched data.
whisky_app/
│
├── lib/
│ ├── core/ # Core utilities and themes
│ ├── feature/ # Features like authentication, home screen, etc.
│ ├── main.dart # App entry point
│
├── android/ # Android-specific configurations
├── ios/ # iOS-specific configurations
├── assets/ # App assets like images, fonts, etc.
└── pubspec.yaml # Project dependencies and settingsTo run the tests for the app, you can use the following command:
flutter testHere are some screenshots of the app:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name. - Commit your changes:
git commit -am 'Add new feature'. - Push to the branch:
git push origin feature/your-feature-name. - Create a new Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter: Thanks to the Flutter team for providing an amazing toolkit for cross-platform development.
- BLoC: For state management in Flutter.