An e-commerce pharmacy management app for Android β order medicines, manage a cart, check out, and run the whole store from an admin panel.
Built as a part of CSE 3120 β Software Engineering & Information Systems project in Android Studio Jellyfish (Java).
|
You don't need Android Studio to take it for a spin β pick whichever is easier:
π Login credentials β the admin account unlocks product management, the user account is the normal shopping experience:
Log in as the user to browse, add to cart and place an order β then log in as admin to add, edit or remove products and watch the catalog change. |
PharmaPlus is a two-sided pharmacy app. On one side, customers can browse medicines and health products by category, open a product to read the details, drop items into a cart, save a delivery address and place an order. On the other side, an admin panel lets the store owner add new products (with images), modify existing ones and delete what's out of stock β all backed by Firebase so changes show up live.
It started as a coursework project, but we treated it like a real product: proper architecture, design patterns where they actually made sense, and an automated test + build pipeline on GitHub.
For customers
- Sign up / log in with Firebase Authentication
- Browse products by category β Medication, Health and Personal Care
- Product detail pages with images and a one-tap add-to-cart
- A cart you can edit before checking out
- Save and pick from multiple delivery addresses
- Place orders and review your past orders
- Payment flow and an order-confirmation screen
For the admin
- Dedicated admin login and panel
- Add new products with images (stored in Firebase Storage)
- Modify or delete existing products
- Everything syncs to the storefront in real time
| Area | What we used |
|---|---|
| Language | Java |
| Backend / DB | Firebase Authentication, Cloud Firestore, Realtime Database, Cloud Storage |
| Networking | Volley |
| Images & animation | Glide, Lottie, RoundedImageView |
| UI | Material Components, ViewBinding, Navigation Component, LiveData & ViewModel |
| Build | Gradle (Kotlin DSL), minSdk 28, targetSdk 34 |
| CI | GitHub Actions |
We didn't sprinkle patterns for the sake of it β each one solved a real problem:
- Singleton β a single shared instance for the
Userand product models - Factory β
ProductQueryFactorybuilds the right Firestore query object per category (medication / health / personal) - Observer β the storefront reacts when a new product is added
- Adapter β RecyclerView adapters for categories, suggested items, cart, orders and the "view all" lists
- Unit testing with JUnit, Mockito and Robolectric (runs on the JVM, no emulator needed)
- UI / instrumentation testing with Espresso
- Continuous integration via GitHub Actions β every push and pull request to
mainbuilds the app and uploads the APK as a downloadable artifact
These are trimmed-down versions of the design for readability β the full app has 20+ functionalities.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
This was a collaborative project by:














