A Flutter-based e-commerce application for a moch up of the University of Portsmouth Union Shop, providing students with an easy way to browse and purchase union merchandise including clothing, accessories, other small items needed for study.
- Product Catalog: Browse through different categories (socks, shirts, hats, etc.)
- Shopping Cart: Add items to cart and manage purchases
- Real-time Database: Firebase integration for dynamic product management
- Product Details: Detailed product descriptions, pricing, and images
- Collections: Organized product categories for easy browsing
- user account: user can login to an account for faster shopping
- Browse Products: Navigate through different product categories from the home screen
- View Product Details: Tap on any product to see detailed information, pricing, and descriptions
- Add to Cart: Use the cart functionality to manage your selected items
- Product Collections: Explore organized collections of related products
- using firebase to store the data of each product
- also acts as a hosting to the sever using the link: https://union-shop-bdb40.web.app/
- Flutter SDK: Version 3.0.0 or higher
- Dart SDK: Version 2.17.0 or higher
- Operating System: Windows, macOS, or Linux
- IDE: Android Studio, VS Code, or IntelliJ IDEA
- Firebase Account: For database functionality and hosting
git clone https://github.com/Goff120/union_shop.git
cd union_shop-
Install Flutter dependencies:
flutter pub get
-
Firebase Setup:
- Create a Firebase project at Firebase Console
- Enable Firebase Realtime Database
- use assests/json/items.json and upload it to the database
- Download configuration files:
google-services.jsonfor Android (place inandroid/app/)GoogleService-Info.plistfor iOS (place inios/Runner/)
- Web configuration is already included in the project
-
Run the application:
# For development (debug mode) flutter run # For web flutter run -d chrome
- Product data is stored in
assets/json/items.json - Firebase configuration in
firebase_options.dart
lib/
├── main.dart # App entry point and routing
├── about_page.dart # About page component
├── cart_page.dart # Shopping cart interface
├── collection.dart # Product collections page
├── collection_product_page.dart # Collection-specific products
├── product_page.dart # Individual product details
├── sign_up_page.dart # User registration (if applicable)
├── logic/
│ ├── cart.dart # Shopping cart logic and state management
│ └── realtime_database.dart # Firebase database operations
├── part_builder/ # Reusable UI components
│ ├── cart_product.dart # Cart item components
│ ├── collection_image.dart # Collection display components
│ ├── footer.dart # App footer
│ ├── main_header.dart # App header/navigation
│ └── product_card.dart # Product display cards
└── styles/ # Styling and theme files
assets/
├── images/ # Product images and assets
└── json/
└── items.json # Product data configuration
test/ # Unit and widget tests
├── logic/ # Tests for business logic
├── pages/ # Tests for page components
└── part_builder/ # Tests for UI components
items └── Group └── item ID ├── title (String) ├── price (String) ├── image (String) ├── discp (String) └── newprice (String)
- Flutter: Cross-platform mobile framework
- Dart: Programming language
- Firebase: Backend services
- Realtime Database for product data
- Firebase Core for initialization
provider: State managementfirebase_core&firebase_database: Firebase integrationcupertino_icons: iOS-style iconshyperlink: URL handling
flutter_test: Testing frameworkflutter_lints: Code quality and stylemockito: Mocking for unit testsfake_cloud_firestore: Firebase testing utilitiesbuild_runner: Code generation
- Payment processing not yet implemented
- User authentication system in development
- Limited to predefined product categories
- Implement secure payment gateway
- Add user account management
- Add product search and filtering
- Implement order tracking system
- Add print shack
Developer: Geoffrey smith up number up2263342 email: up2263342@myport.ac.uk
- GitHub: @Goff120
- Project Repository: union_shop
- other project: sandwitch_shop