ShopAThing is a feature-rich shopping application engineered with Clean Architecture and Modern Android Development (MAD) standards.
Unlike typical demo apps, ShopAThing focuses on scalability, performance, and user experience. It features a robust offline caching layer, server-side search optimization, and a fluid, animated UI that adapts to user preferences.
"Not just a demoβa foundation for a real startup product."
- Performance First: Handles lists of 1000+ items seamlessly using Paging 3.
- Smart Network Usage: Implements Debouncing to minimize API calls during search.
- Offline Capable: The cart persists across app restarts using Room Database.
- Reactive UI: Fully built with Jetpack Compose and Material 3.
- Infinite Scrolling: Smooth pagination loads products effortlessly as you scroll.
- Smart Search: Server-side search with 500ms debounce to reduce network load.
- Dynamic Filtering: Filter products by category using reactive chips.
- Shimmer Loading: Skeleton animations provide a polished loading experience.
- Persistent Cart: Add items, update quantities, or remove products. Data is saved locally via Room, so your cart is never lost.
- Real-Time Badge: A dynamic notification badge on the cart icon updates instantly as you shop.
- Seamless Checkout: Animated checkout flow using Lottie Animations for visual feedback.
- Dark Mode: A global, persistent Dark Theme toggle (saved via DataStore) that remembers your preference.
- Visual Polish: Dynamic star rating bars, error handling, and empty state animations.
- Share Functionality: Native Android share sheet integration to share product details.
The app follows strict Clean Architecture (MVVM) principles to ensure separation of concerns and testability.
| Layer | Component | Technology Used |
|---|---|---|
| π¨ UI | Toolkit | Jetpack Compose (Material 3) |
| Images | Coil (Async Loading) | |
| Animations | Lottie & Shimmer | |
| π§ Logic | Architecture | MVVM + Clean Architecture |
| DI | Dagger Hilt | |
| Async | Coroutines & Flows | |
| πΎ Data | API | Retrofit + OkHttp |
| Local DB | Room (SQLite) | |
| Prefs | DataStore | |
| βοΈ Cloud | Auth | Firebase Authentication |
com.fury.shopathing
βββ data // Data Layer (API, Room DB, Repositories)
β βββ local // Room Entities & DAOs
β βββ remote // Retrofit Interfaces & DTOs
β βββ repository // Implementation of Domain Interfaces
βββ domain // Domain Layer (Pure Kotlin)
β βββ model // Data Classes (Product, CartItem)
β βββ repository // Interfaces
βββ di // Dependency Injection (Hilt Modules)
βββ presentation // UI Layer (ViewModels, Composables)
β βββ components // Reusable UI widgets
β βββ screens // (Home, Detail, Cart, Auth)
β βββ theme // Material 3 Theme & Type
βββ utils // Constants & Helper Classes
| Home | Home (Dark Mode) | Product Details |
|---|---|---|
![]() |
![]() |
![]() |
| Search And Pagination | Empty Cart Animation | Order Placed Animation |
|---|---|---|
![]() |
![]() |
![]() |
| Login Page | Profile | Cart |
|---|---|---|
![]() |
![]() |
![]() |
Download the App:
- Click below to download the latest stable version (v1.0.0) for your Android device:
- π Download ShopAThing-v1.0.0.apk
OR
-
Clone the repository:
git clone https://github.com/SilentFURY-x/ShopAThing-App.git
-
Open in Android Studio:
- Requires Android Studio Hedgehog or newer.
-
Firebase Setup:
- This project uses Firebase Auth.
- Add your own google-services.json file to the /app directory.
-
Build & Run:
- Sync Gradle and run on an Emulator or Physical Device.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
-
Fork the Project
-
Create your Feature Branch:
git checkout -b feature/AmazingFeature
-
Commit your Changes:
git commit -m 'Add some AmazingFeature' -
Push to the Branch:
git push origin feature/AmazingFeature
-
Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Built with β€οΈ using Kotlin and Jetpack Compose.








