Skip to content

Samson8/whisky_app

Repository files navigation

Whisky App

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.

Features

  • 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.

Design

Tech Stack

  • 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.

Libraries Used

Here are the libraries and packages used in this project along with the reasons for their inclusion:

  1. 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.

  2. 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.

  3. get_it
    get_it is 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.

  4. 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.

  5. connectivity_plus
    connectivity_plus is 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.

  6. 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.

Installation

Prerequisites

  1. Flutter: Ensure Flutter is installed on your machine. You can find installation instructions on the Flutter website.

  2. Packages: The app uses a few packages from pub.dev, which will be installed when running the app for the first time.

Steps to Install

  1. Clone the repository:

    git clone <repository_url>
  2. Navigate to the project directory:

    cd whisky_app
  3. Install dependencies:

    flutter pub get
  4. Run the app:

    flutter run

Usage

  1. Sign In: The user can sign in using their email and password (john@mail.com, password123).
  2. Browse Whisky: Users can browse the whisky collection and see detailed information.
  3. Add Tasting Notes: Users can add tasting notes for each whisky (Nose, Palate, and Finish).
  4. Offline Support: If no internet connection is available, the app will use the previously fetched data.

Directory Structure

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 settings

Testing

To run the tests for the app, you can use the following command:

flutter test

Screenshots

Here are some screenshots of the app:

Welcome Screen Signing Screen Notification Details Page Tasting Notes History

Contributing

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature/your-feature-name.
  3. Commit your changes: git commit -am 'Add new feature'.
  4. Push to the branch: git push origin feature/your-feature-name.
  5. Create a new Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

  • Flutter: Thanks to the Flutter team for providing an amazing toolkit for cross-platform development.
  • BLoC: For state management in Flutter.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published