Aethera is a modern, high-performance customer-facing Android application built with a focus on rich aesthetics and a robust, scalable architecture. It serves as the companion app to AetheraAdmin, offering a seamless shopping experience powered by Firebase and the latest Jetpack Compose technologies.
Aethera follows the Stitch Indigo design system, utilizing Material 3 to create a premium, high-contrast, and intuitive user interface.
| Home Screen | Product Detail | Shopping Bag | Profile |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- Real-time Sync: Powered by Firestore
snapshotListener, ensuring product prices, availability, and categories are always up-to-date without manual refreshes. - Advanced Navigation: Built with Navigation 3, utilizing polymorphic
@Serializableroutes for type-safe navigation and state preservation. - Secure Authentication: Complete Email/Password authentication flow with persistent login sessions and user profile management.
- Smart Cart & Wishlist: Automated management of user-specific sub-collections with optimistic UI updates for a snappy experience.
- Detailed Checkout: A structured checkout process that generates unique order IDs and tracks order history in real-time.
- Product Discovery: Category-based filtering and instant client-side search across the product catalog.
- UI Framework: Jetpack Compose with Material 3.
- Architecture: MVVM + Clean Architecture with Feature-based partitioning.
- Dependency Injection: Koin 4.0 — Managed via
AppModule.ktfor repositories and ViewModels. - Navigation: Navigation 3 — High-level, type-safe navigation with
rememberNavBackStack. - Backend: Firebase (Firestore, Auth, Storage).
- Image Loading: Coil 3 — For efficient, coroutine-powered image rendering.
- Serialization: Kotlinx Serialization for route definitions.
- Concurrency: Kotlin Coroutines & StateFlow for reactive data streams.
The project adheres to Clean Architecture principles, ensuring a decoupled and testable codebase.
Contains the core business logic and entities.
- Entities:
Product,Category,CartItem,Order,User. - Repository Interfaces: Defining the contract for data operations.
Handles all external data interactions.
- Firestore Repositories: Implements real-time data fetching using Kotlin Coroutines
callbackFlow. - ResultState Wrapper: A sealed class pattern (
Loading,Success,Error) used across the app for consistent state handling.
A fully reactive UI layer.
- Parent/Content Pattern: Decouples Logic/DI from UI components, making Composables easily previewable.
- Navigation 3 Graph: A polymorphic graph implementation in
AetheraNavGraph.kthandling complex transitions and bottom bar logic.
To run this project, you need to set up a Firebase project:
- Create a project on the Firebase Console.
- Add an Android App with the package name
com.example.aethera. - Download the
google-services.jsonand place it in theapp/directory. - Enable Email/Password Authentication.
- Create a Firestore Database and set up the following collections:
CATEGORY,PRODUCTS,USERS,CART,ORDERS,WISHLIST. - (Optional) Add sample data to
PRODUCTSandCATEGORYcollections to see them in the app.
app/src/main/java/com/example/aethera/
├── common/ # Constants, ResultState, and Utility classes
├── data/
│ ├── di/ # Koin Modules (AppModule)
│ └── repository/ # Firestore & Auth Implementations
├── domain/
│ ├── models/ # Business Entities (Product, Order, etc.)
│ └── repository/ # Interface Definitions
├── presentation/ # Feature-based UI
│ ├── auth/ # Login & Signup screens
│ ├── home/ # Home & Category browsing
│ ├── cart/ # Cart management
│ ├── checkout/ # Order placement flow
│ ├── navigation/ # NavGraph and Route definitions
│ └── theme/ # Stitch Indigo Design Tokens (M3)
└── BaseApplication # Koin & Global Initialization
Tarun Sharma — GitHub
/res/mipmap-xxxhdpi/ic_launcher.png)



