π± MediScan β Android Application
A smart medical search & pharmacy locator app built using Android Studio (Java), Firebase Firestore, Retrofit APIs, and RecyclerView.
π Overview
MediScan is an intelligent Android application designed to help users:
Search for medicine details (brand, generic name, purpose)
Locate nearby pharmacies based on city
Save important medicine data
View personal profile
Seamlessly navigate using an intuitive bottom navigation layout
The app is built using clean architecture, multiple fragments, and external REST APIs.
π Tech Stack
Frontend
Android Studio (Java) XML Layouts RecyclerView + Adapters Bottom Navigation View Material Components
Backend / Cloud
Firebase Firestore (User accounts + Saved medicines)
APIs (2 external APIs required by assignment)
OpenFDA Drug API β Used to search medicines by name β Returns brand name, generic name, purpose, etc.
Nominatim (OpenStreetMap Geocoding API) β Finds pharmacies by city β Returns name + address + coordinates β Opens location in Google Maps
Libraries
Retrofit2 (API calls)
Gson Converter
Firebase Firestore SDK
Glide (optional for images)
Material Design Components
π Project Structure MediScan/ β βββ data/ β βββ FirebaseHelper.java β βββ api/ β β βββ OpenFdaClient.java β β βββ OpenFdaService.java β β βββ OpenFdaResponse.java β β βββ NominatimClient.java β β βββ NominatimService.java β β βββ NominatimResult.java β βββ ui/ β βββ LoginActivity.java β βββ RegisterActivity.java β βββ MainActivity.java β βββ fragments/ β β βββ SearchFragment.java β β βββ PharmaciesFragment.java β β βββ SavedFragment.java β β βββ ProfileFragment.java β βββ adapters/ β βββ DrugAdapter.java β βββ PharmacyAdapter.java β βββ res/ β βββ layout/xml files β βββ item layouts β βββ icons β βββ bottom_nav_menu.xml
π Authentication
The app uses Firebase Firestore to store:
Name
Password (hashed using Base64)
FirebaseHelper.java handles:
User registration
User login
Database save/retrieve operations
Callback interfaces for cleaner code separation
π Search Feature (OpenFDA API) Functionality:
Search any medicine by name
API returns:
Brand name
Generic name
Purpose
Display results using RecyclerView
Save any medicine to Firestore
πΊ Pharmacy Finder (Nominatim API)
Users can:
Enter a city (e.g., "Colombo", "Kandy")
Fetch a list of pharmacies using geocoding
View name + address
Open location directly in Google Maps
π¦ Saved Items
A separate fragment displays all saved medicine entries.
π¨ UI & UX
Bottom navigation for easy movement
CardView-based RecyclerView items
Clean, modern layout
Adaptive app icon (MediScan icon)
Clone or download the project
Open in Android Studio
Connect your Firebase project
Add your google-services.json to:
app/
Sync Gradle
Run on emulator or real device (API 24+)
π§ͺ Testing
Tested on:
Pixel 4 Emulator (API 34)
Samsung A15 5G physical device
No crashes during API fetch or Firebase operations
π¬ Viva / Presentation Points
You can confidently say:
βI implemented two external APIs using Retrofit (OpenFDA + Nominatim).β
βI used Firebase Firestore for user accounts and saved medicine data.β
βFor UI, I used fragments, RecyclerView, and BottomNavigationView.β
βI separated logic using helper classes and adapters to keep the project modular.β
π License
This project is developed as part of an academic assignment for SLIIT / university coursework. Use for learning and educational purposes.
Developer: Imalka Perera
Email: imalkaperera07@gmail.com