Supplr is a modern, modular, and scalable e-commerce application targeting both Android and iOS platforms. Built with Kotlin Multiplatform (KMP) and Jetpack Compose Multiplatform, it allows users to browse products, add to cart, place orders, manage their profiles, and manage their favorite products. Features include location management, Stripe payment integration, and a comprehensive admin analytics dashboard for business insights and product management.
- ๐ฅ Kotlin Multiplatform: Single codebase for Android & iOS
- ๐จ Modern UI: Responsive and animated interface with Jetpack Compose Multiplatform
- ๐๏ธ Contact Us: Customer support and communication
- ๐ Cart & Order Management: Full shopping cart with order tracking
- ๐ค User Profile & Authentication: Secure user management
- ๐ท๏ธ Category & Product Listing: Browse products by categories
- ๐ณ Checkout & Order Completion: Seamless payment experience
- โค๏ธ Favorites: Save and manage favorite products
- ๐บ๏ธ Location Management: Address management with categories (Home, Work, Other)
- ๐ณ Stripe Payment Integration: Real PaymentSheet (Android) / Simulated (iOS)
- ๐ Push Notification Support: Personalized notifications
- ๐ฆ Order History: View and track all past orders with detailed status
- โญ Product Reviews: Rate products, write reviews with photos, helpful/unhelpful voting
- ๐ Coupon & Discounts: Apply coupon codes at checkout (percentage, fixed, free shipping)
- ๐ค Profile Settings: Communication preferences, security settings, account management
- ๐ Security Features: Two-factor authentication, password change, account deletion
- ๐ฎ Gamification: Leaderboard rankings and Spin Wheel for daily prizes
- ๐ ๏ธ Admin Panel: Comprehensive product and analytics management
- ๐ Analytics Dashboard: Real-time business insights with interactive charts
- ๐ Revenue Analytics: Daily revenue tracking with enhanced line charts
- ๐ Top Products: Best-selling products analysis
- ๐ฅ User Statistics: User growth and engagement metrics
- ๐ Date Range Filtering: Flexible time period analysis
- ๐ Real-time Data: Auto-refreshing dashboard with pull-to-refresh
- ๐จ Interactive Charts: Custom Canvas-based charts with animations
- ๐ฑ Responsive Design: Optimized for all screen sizes
- ๐ Secure Access: Role-based authentication and Firestore security rules
- ๐ ๏ธ Order Management: View all orders, update status, cancel orders (except delivered)
- ๐ Firebase Authentication & Firestore
- ๐๏ธ Dependency Injection with Koin
- ๐ Networking with Ktor
- ๐ผ๏ธ Image Loading with Coil - Platform-specific caching (25% memory, 100MB disk)
- ๐งช Comprehensive Unit Testing - 50+ tests with Turbine, Coroutines Test
- ๐ Cursor-based Pagination - Efficient Firestore data fetching with
startAfter() - โพ๏ธ Infinite Scroll - Automatic page loading with LazyColumn scroll detection
- โก Code Splitting - Module-based lazy loading for faster startup performance
- composeApp/ : Main multiplatform entry point and general UI.
- iosApp/ : iOS app entry (integrated with SwiftUI).
- feature/
- auth/ : Authentication (login, register).
- cart/ : Cart management.
- home/ : Home screen and navigation.
- profile/ : User profile management, settings, security features.
- admin_panel/ : ๐ Admin analytics dashboard with charts and insights.
- manage_product/ : Admin add, edit, delete products.
- product_details/ : Product details.
- products_overview/ : Home screen new & discounted product listing.
- payment_completed/ : Order completed screen and post-order.
- categories/ : Category management.
- contact_us/ : Contact with Us.
- favorites/ : Favorites screen and logic.
- locations/ : User address management with categories.
- checkout/ : Payment processing with Stripe integration.
- order_history/ : ๐ฆ Customer order history and tracking.
- gamification/ : ๐ฎ Gamification with Leaderboard and Spin Wheel.
- data/ : Data layer, repositories, and services.
- shared/ : Shared domain models, utils, constants.
- di/ : Dependency injection modules (Koin).
- navigation/ : Navigation graph and routing.
- Clean Architecture: Data โ Domain โ Presentation layers
- Feature-based modules: Independent development and testing
- Centralized DI with Koin: All ViewModels and repositories managed centrally
- Testability: Mockable repository interfaces and ViewModels
- Analytics Architecture: Dedicated analytics layer with real-time data processing
- Kotlin Multiplatform (KMP)
- Jetpack Compose Multiplatform
- Koin (Dependency Injection)
- Firebase (Auth, Firestore, Storage, Push Notification)
- Ktor (HTTP Client & Stripe API Integration)
- Stripe SDK (Android: PaymentSheet, iOS: Simulated Payment Flow)
- Material3 (Modern UI components)
- Custom Canvas Charts (Analytics visualizations)
- Coil (Image Loading)
- Navigation Compose
- MessageBar KMP
- Animated Components (Enhanced user experience)
- Coroutines & Flow
- Multiplatform Settings
- Firebase Firestore (with comprehensive security rules)
- Real-time Data Synchronization
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Comprehensive Test Suite - 50+ unit tests across domain, repository, and ViewModel layers
- Testing Libraries - kotlin-test, kotlinx-coroutines-test, Turbine
- Domain Tests - RequestState, Product, Customer, CartItem, PaginatedResult
- Fake Repositories - FakeFavoritesRepository, FakeProductRepository for isolated testing
- ViewModel Tests - FavoritesViewModel with StateFlow and callback verification
- Run Tests -
./gradlew :shared:testDebugUnitTest :data:testDebugUnitTest
- Leaderboard - View top shoppers and compete with other customers
- User Rankings - Track your position among all users
- Spin Wheel - Daily spin for amazing prizes and discounts
- Prize Rewards - Earn coupons, discounts, and special offers
- Animated UI - Smooth animations and engaging user experience
- Real-time Updates - Live leaderboard data from Firestore
- Module-based Lazy Loading - Feature modules load on-demand for faster startup
- ModuleLoader Utility - Centralized module loading with
ModuleTypeenum - Lazy Module Types - Admin, Secondary, and Gamification modules
- Navigation Integration - Automatic module loading before screen navigation
- Startup Optimization - Only core and auth modules loaded at app start
- Cursor-based Pagination - Firestore
startAfter()andlimit()for efficient data fetching - PaginatedResult - Generic data class with
items,lastDocumentId,hasNextPage - PaginationState - UI state management (Idle, Loading, LoadingMore, EndReached, Error)
- Infinite Scroll - LazyColumn scroll detection with automatic page fetching
- CachedAsyncImage - Reusable composable with shimmer placeholder and error handling
- Platform-specific ImageLoader - Android/iOS image loader with expect/actual pattern
- Memory Cache - 25% of available memory for optimal performance
- Disk Cache - 100MB in app cache directory for offline access
- Applied to - CategorySearchScreen, ProductCard, HomeProductCard
- Coupon Code Input - Apply coupons at checkout
- Multiple Coupon Types - Percentage, Fixed Amount, Free Shipping
- Real-time Validation - Expiration, usage limit, minimum order checks
- Discount Display - Strikethrough original price, show savings
- Order Integration - Coupon tracked in order with discount details
- Usage Tracking - Automatic usage count increment on order
- Firestore Collection -
couponscollection for coupon management
- Settings Screen - Centralized settings with communication preferences
- Communication Preferences - Email, push notification, SMS notification toggles
- Password Change - Secure password update with current password verification
- Two-Factor Authentication - Enable/disable 2FA for enhanced security
- Account Deletion - Permanent account deletion with password confirmation
- Birth Date - User birth date for personalized discounts
- Profile Photo - Profile photo URL management
- Drawer Navigation - Settings accessible from navigation drawer
- Star Ratings - Users can rate products with 1-5 stars
- Written Reviews - Detailed review comments with 500 character limit
- ๐ท Photo Upload - Attach photos to reviews (Firebase Storage)
- ๐๐ Helpful Voting - Vote on review helpfulness with atomic counters
- Real-time Updates - Average rating and count update instantly
- Separate Review Page - Dedicated
AddReviewScreenfor writing reviews - Photo Gallery -
ReviewPhotosGallerycomponent for displaying review images - Vote Tracking -
review_votesFirestore collection for vote management - User Restrictions - Cannot vote on own reviews, one vote per review
- Admin Order Management - View and manage all customer orders
- Order Status Updates - Progress orders through PENDING โ CONFIRMED โ PREPARING โ SHIPPED โ DELIVERED
- Order Cancellation - Cancel orders (except delivered/cancelled)
- Order Detail View - Comprehensive order details with status timeline
- Customer Order History - Users can view their order history and track status
- Real-time Updates - Live order status synchronization
- Status Timeline - Visual order progress tracking
- Modern UI - Consistent design with existing admin panel
- Interactive Revenue Charts with custom Canvas drawing
- Real-time Business Metrics (revenue, orders, average order value)
- Enhanced Line Charts with grid lines, axes, and point connections
- Top-selling Products Analysis with visual indicators
- User Statistics Tracking with growth metrics
- Date Range Filtering (Today, Last 7 Days, Last 30 Days)
- Animated Components with staggered loading effects
- Loading States with shimmer effects
- Error Handling with retry mechanisms
- Responsive Design for all screen sizes
- User-friendly address management with add/edit functionality
- Categorized locations: Home ๐ , Work ๐ข, Other ๐
- Integrated into custom drawer for easy access
- Firebase Firestore storage with user-specific security rules
- Multi-platform payment processing
- Android: Real Stripe PaymentSheet for native payment experience
- iOS: Realistic simulated payment flow with same UX
- Dynamic API key management from shared constants
- Complete order management with payment tracking
- "Pay with Card" ๐ณ and "Pay on Delivery" ๐ options
- Advanced review system - Star ratings, photos, and helpful voting
- Favorites management with instant updates
- Responsive design for all screen sizes
- Bottom sheet experiences consistent across platforms
- JDK 17+
- Android Studio Giraffe or newer
- Xcode 14+ (for iOS)
git clone https://github.com/kaaneneskpc/Supplr.git
cd Supplr./gradlew :composeApp:installDebug- Open
iosApp/iosApp.xcodeprojin Xcode. - Configure as needed and run.
- Role-based Authentication: Admin access controlled via email verification
- Firestore Security Rules: Comprehensive rules for analytics, dashboard data, and admin logs
- Data Isolation: User-specific data access with proper authorization
- Audit Trail: Admin actions logged with timestamps and details
analytics/- Analytics data (admin-only read/write)admin_dashboard/- Dashboard configuration (admin-only)user_stats/- User statistics (admin-only read)sales_analytics/- Sales data (admin-only)product_analytics/- Product performance (admin-only)admin_logs/- Audit trail (admin-only read, create-only)
Contributions are welcome! ๐ Fork, create a new branch, and submit your changes as a PR.
- Fork ๐ด
- Create a new branch ๐ (
git checkout -b feature-name) - Commit your changes ๐ฏ (
git commit -m 'Description') - Push the branch ๐ค (
git push origin feature-name) - Open a Pull Request ๐ฅ
- Analytics Enhancements: New chart types, advanced metrics
- UI/UX Improvements: Better animations, responsive design
- Performance Optimizations: Chart rendering, data loading
- Testing: Unit tests, UI tests for admin features
- Documentation: Code documentation, user guides
This project is open source and available under the MIT License.
- Kotlin Multiplatform
- Jetpack Compose Multiplatform
- Koin DI
- Firebase
- Ktor
- Coil
- Canvas Drawing in Compose
Note: For more details and architectural explanations, see the PRD document.
Kaan Enes Kapฤฑcฤฑ
- LinkedIn: Kaan Enes Kapฤฑcฤฑ
- GitHub: @kaaneneskpc
- Email: kaaneneskpc1@gmail.com
๐ก Open to feedback and collaboration! If you're interested in modern mobile architecture, analytics dashboards, or multiplatform development, feel free to connect. ๐