https://github.com/gianmen91/cinnamon_rolls_shop
App inspired by Cinnamood - Cinnamon Roll Shop developed by using Provider for state management
https://github.com/gianmen91/cinnamon_rolls_shop
cinnamon dart flutter github-actions hero-widget provider provider-state-management widget-testing
Last synced: 28 days ago
JSON representation
App inspired by Cinnamood - Cinnamon Roll Shop developed by using Provider for state management
- Host: GitHub
- URL: https://github.com/gianmen91/cinnamon_rolls_shop
- Owner: GianMen91
- License: mit
- Created: 2024-01-19T23:04:33.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-03-01T23:19:53.000Z (over 1 year ago)
- Last Synced: 2025-03-01T23:25:35.096Z (over 1 year ago)
- Topics: cinnamon, dart, flutter, github-actions, hero-widget, provider, provider-state-management, widget-testing
- Language: Dart
- Homepage:
- Size: 4.97 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cinnamood - Cinnamon Rolls Shop
## Overview
[](https://github.com/GianMen91/cinnamon_rolls_shop/blob/master/LICENSE)
[](https://github.com/GianMen91/cinnamon_rolls_shop/releases)
[](https://github.com/GianMen91/cinnamon_rolls_shop/actions)
[](https://shields.io)
[](https://pub.dev/packages/cinnamon_rolls_shop)
[](https://github.com/GianMen91/cinnamon_rolls_shop/graphs/contributors)
[](https://github.com/GianMen91/cinnamon_rolls_shop/commits)
"Cinnamood - Cinnamon Rolls Shop" is an application I developed with **Flutter** that uses **Provider** for state management.
It is inspired by the renowned [Cinnamood](https://cinnamood.de) shop in Berlin and brings the delectable experience of exploring and virtually shopping for mouth-watering cinnamon rolls.
The app captures the essence of the Cinnamood shop, featuring a user-friendly interface, a diverse product catalog, and a dynamic cart system.
I used **Hero Widget** for creating smooth, visually appealing transitions between screens by animating a shared element.
**CI/CD** with **GitHub Actions**.
Additionally, the app's **UI components** are designed and tested using **Widgetbook**, a tool that enables efficient and structured UI testing and documentation, providing an overview of individual widgets and their behavior in different scenarios.
## Screenshots

## Features
- **User-Friendly Interface**: Enjoy an intuitive and visually appealing design for a seamless user experience.
- **Product Catalog**: Browse through a diverse range of cinnamon rolls, each with its unique flavor and description.
- **Dynamic Cart System**: Easily manage your cart by adding items, updating quantities, and removing items with convenience.
- **Type Filters**: Explore cinnamon rolls conveniently categorized into "Cinnamon Rolls," "Fruity Rolls," and "Next Level Rolls."
- **Search Functionality**: Quickly find your favorite rolls using the efficient search feature.
## UI Design
The UI design is inspired by [this YouTube video](https://www.youtube.com/watch?v=XBKzpTz65Io).
## Content Attribution
All cinnamon roll images, names, descriptions, and colors are sourced from the official [Cinnamood shop webpage](https://cinnamood.de/en/our-rolls/).
## Technologies Used
- **Flutter**: A powerful UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase.
- **Hero Widget**: A built-in Flutter widget used for creating smooth, visually appealing transitions between screens by animating a shared element.
- **Provider Package**: State management library for managing and listening to changes in the app state.
- **Badges Package**: Widget for displaying badges, enhancing the shopping cart icon.
- **Linting**: The codebase adheres to best practices and coding standards using lint rules.
- **Widgetbook**: A UI design and testing tool to visualize, test, and document individual widgets in isolation.
- **Widget Tests**: Extensive use of widget tests to ensure the robustness of the UI components, behaviors, and overall application functionality.
## Responsiveness
The app is designed to work seamlessly across various screen sizes, providing a consistent and enjoyable experience on both small and large devices.
### Widgetbook Setup
Widgetbook is used to visualize and test UI components in isolation. To run it, follow these steps:
1. Navigate to the widgetbook directory: `cd widgetbook`
2. Ensure generated files are up to date by running: `dart run build_runner build -d`
3. Start Widgetbook: `flutter run`
## Future Enhancements
- Checkout Process: Implement a complete checkout process for users to finalize their orders.
- User Authentication: Add user authentication for personalized experiences.
- Localization: Support multiple languages for a broader user audience.