Skip to content

rragnarsd/siply

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

42 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Siply

Bringing your favorite drinks to your doorstep! 🍻🍷πŸ₯ƒ

A modern Flutter application for alcohol delivery with a comprehensive e-commerce experience. Built with Firebase backend, Riverpod state management, and a beautiful Material Design interface.

πŸš€ Features

πŸ” Authentication System

  • User Registration & Login: Email/password authentication with Firebase Auth
  • Password Reset: Secure password recovery via email
  • Form Validation: Comprehensive input validation for email and password fields
  • Error Handling: User-friendly error messages and loading states
  • Auto-login: Persistent authentication state management

🏠 Home Screen

  • Featured Banner: Dynamic promotional banner with remote configuration support
    • Remote Config Integration: Banner content, images, and links managed via Firebase Remote Config
    • Real-time Updates: Banner changes without app updates
    • Fallback Support: Graceful handling when remote config is unavailable
  • Latest Products: Recently added products (within last 7 days)
  • Category Navigation: Quick access to different product categories
  • Product Grid: Beautifully designed product cards with images and pricing

πŸ›οΈ Product Catalog

  • Multi-Category Support:
    • 🍺 Beers: Various beer brands (Heineken, Budweiser, Corona, etc.)
    • 🍷 Wine: Red, white, and rosΓ© wines
    • πŸ₯ƒ Spirits: Premium spirits (Jack Daniels, Absolut, Bombay, etc.)
    • 🍸 Other: Shots, cocktails, and specialty drinks
  • Product Details: Comprehensive product information including:
    • Alcohol percentage
    • Volume (ml)
    • Origin information
    • Available quantity
    • Product descriptions
  • Search & Filter: Category-based product filtering
  • Product Modals: Detailed product views with full specifications

πŸ›’ Shopping Cart

  • Add to Cart: Seamless product addition with quantity selection
  • Cart Management:
    • Quantity adjustment (+/- buttons)
    • Item removal (swipe to delete)
    • Bulk cart clearing
  • Real-time Updates: Live cart total calculation
  • Persistent Storage: Cart state maintained across app sessions

πŸ’³ Checkout Process

  • Order Summary: Detailed breakdown of items and pricing
  • Delivery Fee Calculation: Transparent pricing with delivery costs
  • Order Confirmation: Complete order processing workflow

πŸ‘€ User Profile

  • Personal Information: User details and account management
  • Order History: Complete order tracking and history
  • Favorites: Saved favorite products
  • Settings: App preferences and configuration
  • Logout: Secure session termination

πŸ“± User Interface

  • Material Design 3: Modern, clean interface following Material Design guidelines
  • Responsive Design: Optimized for various screen sizes
  • Custom Components:
    • Siply buttons (primary, secondary, icon buttons)
    • Custom text form fields with validation
    • Modal sheets and bottom sheets
    • Loading indicators and animations

🎨 Design System

  • Custom Color Palette: Carefully crafted color scheme
  • Typography: Consistent text styling with Google Fonts
  • Icons: Material Design icons throughout the app
  • Animations: Smooth transitions and micro-interactions
  • Accessibility: Screen reader support and accessibility features

πŸ› οΈ Technical Stack

Frontend

  • Flutter: Cross-platform mobile development framework
  • Dart: Programming language
  • Riverpod: State management and dependency injection
  • Go Router: Declarative routing and navigation
  • Material Design: UI component library

Backend & Services

  • Firebase Auth: User authentication and management
  • Cloud Firestore: NoSQL database for products and user data
  • Firebase Core: Firebase initialization and configuration
  • Firebase Remote Config: Dynamic configuration management for app features
  • ImageKit: Image storage and optimization (cost-effective alternative to Firebase Storage)

Development Tools

  • Freezed: Code generation for immutable classes
  • JSON Annotation: JSON serialization
  • Build Runner: Code generation automation
  • Flutter Lints: Code quality and style enforcement
  • Riverpod Lint: Riverpod-specific linting rules

UI/UX Libraries

  • Google Fonts: Typography
  • Cached Network Image: Optimized image loading and caching
  • Flutter SpinKit: Loading animations
  • Wolt Modal Sheet: Beautiful modal presentations

πŸ“ Project Structure

lib/
β”œβ”€β”€ firebase_options.dart         # Firebase configuration
β”œβ”€β”€ main.dart                     # App entry point
β”œβ”€β”€ root.dart                     # Root navigation wrapper
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ auth/                     # Authentication screens
β”‚   β”‚   β”œβ”€β”€ model/                # User data models
β”‚   β”‚   β”œβ”€β”€ provider/             # Auth state management
β”‚   β”‚   β”œβ”€β”€ service/              # Auth service layer
β”‚   β”‚   └── widgets/              # Auth UI components
β”‚   β”œβ”€β”€ cart/                     # Shopping cart functionality
β”‚   β”‚   β”œβ”€β”€ model/                # Cart data models
β”‚   β”‚   β”œβ”€β”€ provider/             # Cart state management
β”‚   β”‚   β”œβ”€β”€ service/              # Cart service layer
β”‚   β”‚   └── widgets/              # Cart UI components
β”‚   β”œβ”€β”€ checkout/                 # Order processing
β”‚   β”‚   β”œβ”€β”€ provider/             # Checkout state management
β”‚   β”‚   β”œβ”€β”€ service/              # Checkout service layer
β”‚   β”‚   └── widgets/              # Checkout UI components
β”‚   β”œβ”€β”€ favorites/                # User favorites functionality
β”‚   β”‚   β”œβ”€β”€ model/                # Favorites data models
β”‚   β”‚   β”œβ”€β”€ provider/             # Favorites state management
β”‚   β”‚   β”œβ”€β”€ service/              # Favorites service layer
β”‚   β”‚   └── widgets/              # Favorites UI components
β”‚   β”œβ”€β”€ home/                     # Home screen and widgets
β”‚   β”‚   β”œβ”€β”€ provider/             # Home state management
β”‚   β”‚   β”œβ”€β”€ service/              # Home service layer
β”‚   β”‚   └── widgets/              # Home UI components
β”‚   β”œβ”€β”€ orders/                   # Order history
β”‚   β”‚   β”œβ”€β”€ model/                # Order data models
β”‚   β”‚   β”œβ”€β”€ provider/             # Orders state management
β”‚   β”‚   β”œβ”€β”€ service/              # Orders service layer
β”‚   β”‚   └── widgets/              # Orders UI components
β”‚   β”œβ”€β”€ product/                  # Product catalog
β”‚   β”‚   β”œβ”€β”€ model/                # Product data models
β”‚   β”‚   β”œβ”€β”€ provider/             # Product state management
β”‚   β”‚   β”œβ”€β”€ service/              # Product service layer
β”‚   β”‚   └── widgets/              # Product UI components
β”‚   β”œβ”€β”€ profile/                  # User profile management
β”‚   β”‚   └── widgets/              # Profile UI components
β”‚   └── shared/                   # Shared UI components
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ data/                     # Local data and constants
β”‚   β”œβ”€β”€ theme/                    # Theme configuration
β”‚   β”œβ”€β”€ constants.dart            # App constants and configuration
β”‚   β”œβ”€β”€ extensions.dart           # Dart extensions
β”‚   β”œβ”€β”€ local_data.dart           # Local data utilities
β”‚   β”œβ”€β”€ routes.dart               # Navigation configuration
β”‚   β”œβ”€β”€ timestamp_converter.dart  # Timestamp utilities
β”‚   └── validators.dart           # Form validation logic
└── assets/                       # App assets
    β”œβ”€β”€ icons/                    # App icons
    β”œβ”€β”€ images/                   # App images
    └── vectors/                  # App vector graphics

UI/UX

  • Figma
  • Illustrations from unDraw (Katerina Limpitsouni)
  • Images and Logo from Canva
  • Font Family: Playfair Display & Lato
  • Color palette:
color

🎯 Key Features Implementation

State Management

  • Riverpod Providers: Centralized state management
  • Async Providers: Efficient data fetching and caching
  • State Notifiers: Reactive state updates
  • Provider Scoping: Optimized widget rebuilds

Navigation

  • Go Router: Type-safe navigation
  • Nested Routes: Complex navigation hierarchies
  • Route Guards: Authentication-based route protection

Data Management

  • Firestore Integration: Real-time database synchronization
  • Image Optimization: Cached network images
  • Data Models: Type-safe data structures with Freezed

UI/UX Features

  • Responsive Design: Adaptive layouts for different screen sizes (In progress)
  • Loading States: Comprehensive loading indicators
  • Error Handling: User-friendly error messages
  • Form Validation: Real-time input validation
  • Accessibility: Screen reader and accessibility support (In progress)

πŸ”§ Remote Configuration

Firebase Remote Config Integration

The app leverages Firebase Remote Config to dynamically manage content and features without requiring app updates:

Banner Management

  • Dynamic Content: Banner images, text, and promotional messages can be updated remotely
  • Real-time Updates: Changes are fetched and applied when the app is opened
  • Fallback Strategy: Local default values ensure the app functions even when remote config is unavailable

Implementation Details

  • Provider Pattern: Remote config state managed through Riverpod providers
  • Error Handling: Graceful fallback to default values on fetch failures
  • Loading States: Smooth loading indicators during config fetch
  • Type Safety: Strongly typed configuration models using Freezed

πŸ“· Screenshot

siply_cover