Skip to content

FrancKINANI/ShopEasy

Repository files navigation

Le Revendeur CentralisΓ© πŸ›’ - Application Android de Gestion Commerciale

Production-Ready | Panel Admin Complet | Material Design 3 | Architecture SΓ©curisΓ©e

Le Revendeur Centralisé (anciennement ShopEasy) est une application complète permettant la gestion de stocks, la prise de commandes et la vente en ligne, construite avec des standards professionnels.


πŸ“‹ Table of Contents


✨ Features

πŸ” Authentification & RΓ΄les

  • RΓ΄les Distincts: ADMIN (Gestion) vs USER (Client)
  • Email/Password Sign-Up & Sign-In avec validation stricte
  • Redirection Dynamique selon le rΓ΄le aprΓ¨s login
  • Session SΓ©curisΓ©e persistante

πŸ›οΈ Product Discovery

  • Browse All Products with grid layout
  • Real-time Search functionality
  • Category Filtering (All, Price Low, Price High, Trending)
  • Product Details with full information
  • Wishlist Support (icon ready)
  • Offline Product Cache via Room Database

πŸ›’ Shopping Cart

  • Add/Remove Items with quantity management
  • Real-time Price Calculation
  • Persistent Storage (survives app restart)
  • Swipe to Delete functionality
  • Clear Cart option

πŸ“¦ Order Management

  • Checkout Process from cart
  • Order History with complete tracking
  • Order Status Updates (Pending β†’ Shipping β†’ Delivered)
  • Order Details view with items breakdown
  • Real-time Updates via Firestore

πŸ”” Notifications

  • Push Notifications via Firebase Cloud Messaging
  • Order Status Alerts when status changes
  • Promotional Messages support
  • Custom Notification Handling

🎨 User Experience

  • Dark Mode Support with toggle in settings
  • Premium Material Design 3 UI
  • Smooth Animations (slide, fade, scale)
  • Responsive Layouts for all screen sizes
  • Accessibility Ready with proper contrast ratios
  • Custom Design System (colors, typography, spacing)

πŸ›‘οΈ Panel Administrateur

  • Gestion du Catalogue: Ajout, modification et suppression de produits
  • Gestion des Commandes: Vue d'ensemble de toutes les transactions clients
  • Support Client: RΓ©ception et lecture des messages de contact / FAQ
  • SΓ©curitΓ©: AccΓ¨s restreint via User.Role.ADMIN
  • Auto-Provisioning: CrΓ©ation automatique du compte admin au premier lancement

⚑ Offline & Performance

  • Offline-First Approach with Room caching
  • Cache Invalidation strategy
  • Smart Sync when connection restored
  • Image Optimization with Glide
  • Efficient Database Queries

πŸ›  Tech Stack

πŸ’» Core Technologies

Category Technology Version
Language Java 11+
API Level Android 24-34
Architecture MVVM + Clean -
DI Framework Hilt/Dagger Latest

πŸ“š Jetpack Components

  • Navigation Component - Fragment navigation & deep linking
  • ViewModel - UI state management
  • LiveData - Reactive data binding
  • Room - Local database with Type-safety
  • DataStore - Modern SharedPreferences replacement
  • View Binding - Type-safe view access

πŸ”₯ Firebase Services

Service Usage
Authentication User sign-in (Email + Google)
Firestore Real-time database for products, orders
Storage Image hosting for products
Cloud Messaging Push notifications

🎨 UI Libraries

  • Material Design 3 - Modern Material Design system
  • Glide - Efficient image loading & caching
  • Material Components - Pre-built Material widgets
  • Lottie - (Ready for animations)

πŸ”§ Utilities

  • Retrofit - (Via Firebase for now)
  • Coroutines - Async operations
  • Gson - JSON serialization
  • ProGuard/R8 - Code obfuscation

🎨 Design System & UI Enhancements

πŸ“ Modern Design (January 2026 Update)

ShopEasy recently underwent a complete design modernization with a professional Material Design 3 system:

Color Palette

  • Primary: #2563EB (Modern Blue) - Primary actions
  • Accent: #F59E0B (Vibrant Orange) - Highlights
  • Success: #10B981 (Green) - Delivered status
  • Error: #EF4444 (Red) - Errors & warnings
  • Warning: #F59E0B (Orange) - Pending status
  • Info: #3B82F6 (Blue) - Shipping status
  • 19 Total Colors + full dark mode support

Typography System

  • Display: Poppins Bold (32sp) - Headers
  • Heading 1-3: Poppins Semibold (24-20sp) - Section titles
  • Body Large/Medium: Inter Regular (16-14sp) - Content
  • Body Small: Inter Regular (12sp) - Secondary text
  • Label: Poppins Semibold (12sp UPPERCASE) - Buttons, tags

Spacing System

  • XS: 4dp - Minimal gaps
  • SM: 8dp - Small gaps
  • MD: 12dp - Medium gaps
  • LG: 16dp - Large gaps
  • XL: 24dp - Extra large
  • XXL: 32dp - Maximum gaps

Elevation & Corners

  • Corner Radius: 8dp (small), 12dp (medium), 16dp (large), 24dp (full)
  • Elevation Levels: 1dp-24dp following Material3 spec
  • Shadows: Soft, layered shadows for depth

🎯 Redesigned Screens

Screen Enhancements
Login/Signup Gradient hero, premium cards, smooth inputs
Home Header with greeting, search bar, category chips
Product Cards Image with overlay, discount badge, ratings
Shopping Cart Smooth quantity controls, price breakdown
Profile Overlapped avatar, dark mode toggle
Orders Color-coded status badges, quick actions

πŸ“š Design Documentation

Complete design documentation available:


πŸ— Architecture

MVVM Pattern

β”Œβ”€ View Layer (Fragments)
β”‚   └─ Observe LiveData
β”‚       └─ Triggers UI updates
β”‚
β”œβ”€ ViewModel Layer
β”‚   └─ Manages UI state
β”‚       └─ Handles user interactions
β”‚
└─ Data Layer (Repositories)
    └─ Provides data from Local/Remote
        └─ Room DB + Firestore

Clean Architecture Principles

Presentation Layer (UI, ViewModels)
        ↓
Domain Layer (Business Models)
        ↓
Data Layer (Repositories)
        ↓
Data Sources (Local DB, Remote API)

Repository Pattern

  • Single Source of Truth for data
  • Abstraction between layers
  • Smart Caching with Room
  • Conflict Resolution between local & remote

Dependency Injection (Hilt)

// Automatic injection of dependencies
@Inject
ProductRepository productRepository;

// Provides singletons for Firebase, DB, etc.
@Provides
@Singleton
FirebaseAuth provideAuth() { ... }

πŸ“‚ Project Structure

ShopEasy/
β”œβ”€β”€ app/src/main/
β”‚   β”œβ”€β”€ java/com/ma/shopeasy/
β”‚   β”‚   β”œβ”€β”€ ShopEasyApp.java              (Application entry point)
β”‚   β”‚   β”œβ”€β”€ ui/                           (MVVM Presentation Layer)
β”‚   β”‚   β”‚   β”œβ”€β”€ MainActivity.java
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/                     (Login/Signup)
β”‚   β”‚   β”‚   β”œβ”€β”€ home/                     (Product browsing)
β”‚   β”‚   β”‚   β”œβ”€β”€ products/                 (Product details)
β”‚   β”‚   β”‚   β”œβ”€β”€ cart/                     (Shopping cart)
β”‚   β”‚   β”‚   └── orders/                   (Order history)
β”‚   β”‚   β”œβ”€β”€ data/                         (Data Layer)
β”‚   β”‚   β”‚   β”œβ”€β”€ repository/               (Single source of truth)
β”‚   β”‚   β”‚   β”œβ”€β”€ local/                    (Room database)
β”‚   β”‚   β”‚   └── remote/                   (Firebase)
β”‚   β”‚   β”œβ”€β”€ domain/                       (Business models)
β”‚   β”‚   β”‚   └── models/
β”‚   β”‚   β”œβ”€β”€ di/                           (Dependency injection)
β”‚   β”‚   └── utils/                        (Utilities & helpers)
β”‚   β”‚
β”‚   └── res/                              (Resources)
β”‚       β”œβ”€β”€ layout/                       (✨ 9 redesigned layouts)
β”‚       β”œβ”€β”€ values/                       (✨ Design system)
β”‚       β”‚   β”œβ”€β”€ colors.xml                (19 colors)
β”‚       β”‚   β”œβ”€β”€ dimens.xml                (Spacing system)
β”‚       β”‚   β”œβ”€β”€ themes.xml                (Material3)
β”‚       β”‚   └── strings.xml
β”‚       β”œβ”€β”€ values-night/                 (✨ Dark mode)
β”‚       β”œβ”€β”€ drawable/                     (✨ Gradients & shapes)
β”‚       β”œβ”€β”€ font/                         (✨ Typography)
β”‚       └── anim/                         (✨ Animations)
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ architecture.md                   (Architecture overview)
β”‚   └── diagrams/                         (UML diagrams)
β”‚
└── design-docs/                          (✨ NEW)
    β”œβ”€β”€ DESIGN_INDEX.md                   (Design navigation)
    β”œβ”€β”€ DESIGN_SYSTEM.md                  (Color, typography, spacing)
    β”œβ”€β”€ DESIGN_GUIDE.md                   (Developer guide)
    β”œβ”€β”€ VISUAL_DESIGN_GUIDE.md            (Visual specs)
    └── IMPLEMENTATION_CHECKLIST.md       (QA checklist)

πŸš€ Getting Started

Prerequisites

  • Android Studio: Ladybug or newer
  • JDK: Version 17+
  • Gradle: 8.0+
  • Firebase Project: Required for full functionality

Installation

1. Clone the Repository

git clone https://github.com/FrancKINANI/ShopEasy.git
cd ShopEasy

2. Firebase Setup (Required for Full Features)

# Go to Firebase Console: https://console.firebase.google.com/

# 1. Create a new project named "ShopEasy"
# 2. Create an Android app with package: com.ma.shopeasy
# 3. Download google-services.json
# 4. Place it in: app/google-services.json

3. Configure Local Properties

# Create local.properties if not exists
echo "sdk.dir=/path/to/android/sdk" > local.properties

4. Build the Project

# Build the project (Verified Stable)
./gradlew assembleDebug

Firebase Configuration Details

Required Services:

  • βœ… Authentication (Email + Google Sign-In)
  • βœ… Firestore Database
  • βœ… Cloud Storage
  • βœ… Cloud Messaging (FCM)

Firestore Collections Structure:

users/
β”œβ”€β”€ {userId}/
β”‚   β”œβ”€β”€ email: string
β”‚   β”œβ”€β”€ displayName: string
β”‚   └── createdAt: timestamp

products/
β”œβ”€β”€ {productId}/
β”‚   β”œβ”€β”€ name: string
β”‚   β”œβ”€β”€ price: number
β”‚   β”œβ”€β”€ category: string
β”‚   β”œβ”€β”€ imageUrl: string
β”‚   └── description: string

orders/
β”œβ”€β”€ {orderId}/
β”‚   β”œβ”€β”€ userId: string
β”‚   β”œβ”€β”€ items: array
β”‚   β”œβ”€β”€ totalPrice: number
β”‚   β”œβ”€β”€ status: string (pending/shipped/delivered)
β”‚   └── createdAt: timestamp

πŸ§ͺ Testing

Unit Tests

./gradlew testDebugUnitTest

Integration Tests

./gradlew connectedAndroidTest

Coverage Report

./gradlew jacocoTestReport

πŸ“„ Documentation

Core Documentation

Design Documentation

Project Documentation


🀝 Contributing

Code Style

  • Follow Google Java Style Guide
  • Use meaningful variable names
  • Add comments for complex logic
  • Keep methods focused (single responsibility)

Pull Request Process

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request with detailed description

Issues

  • Use GitHub Issues for bug reports
  • Provide detailed reproduction steps
  • Include device/OS information

πŸ“Š Project Status

Aspect Status Notes
Architecture βœ… Complete MVVM + Clean (Hilt, Flow ready)
Admin Panel βœ… Complete Full CRUD + Support management
Build Status βœ… STABLE Compilation verified (Jan 15, 2026)
UI/UX Design βœ… Complete Material3 system (Redesign done)
Documentation βœ… Complete 50+ pages of guides & analysis

πŸ›  Build Status

BUILD SUCCESSFUL in 1m 55s
39 actionable tasks: 13 executed, 26 up-to-date

Compilation validΓ©e sur Android SDK 34 (Ladybug).


πŸ› Known Issues & Limitations

  • Font files (TTF) need to be added from Google Fonts
  • Image placeholders need replacement with actual product images
  • Animation integration in Java code pending
  • Tablet layout optimizations needed for larger screens

πŸ“ž Support & Contact


πŸ“œ License

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


πŸ‘ Acknowledgments

  • Material Design 3 - Design system inspiration
  • Firebase - Backend services
  • Android Jetpack - Architecture components
  • Community - Open source contributions

Last Updated: January 15, 2026
Version: 2.5 (Admin Panel + Stability Fixes)
Status: πŸš€ PRODUCTION-READY & STABLE

About

ShopEasy is a fully-featured, production-ready Android e-commerce application demonstrating modern development practices with MVVM architecture, clean code principles, and professional UI/UX design.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors