A comprehensive medical forum Android application designed to facilitate open discussions on health issues, coordinate blood donations, and provide emergency assistance. The platform also features real-time COVID-19 statistics, fostering a community dedicated to health awareness and support.
-
MVC (Model-View-Controller) - Separation of concerns with Activities/Fragments as Views, Models for data, and Controllers for business logic
- Views:
DashboardActivity.java,HomeFragment.java,ChatActivity.java,PostDetailsActivity.java - Models:
ModelPost.java,ModelChat.java,ModelComment.java,ModelUsers.java,DonorModel.java - Controllers:
AddPostActivity.java,CreatePostFragment.java,ChatListFragment.java
- Views:
-
Observer Pattern - Firebase Listeners for real-time data synchronization
HomeFragment.java(Post feed listener),ChatActivity.java(Message listener)PostDetailsActivity.java(Comment listener),AdapterPosts.java(Data observer)- Implementation: Firebase
ValueEventListener,ChildEventListener
-
Adapter Pattern - RecyclerView Adapters for dynamic list rendering
AdapterPosts.java(Post list adapter)AdapterChat.java(Message bubbles)AdapterComments.java(Comment list)AdapterUsers.java(User search results)CountrywiseAdapter.java(COVID-19 country list)DrawMenuAdapter.java(Navigation drawer)
-
Builder Pattern - Firebase queries construction
HomeFragment.java- Building queries:.orderByChild(),.limitToLast(),.addValueEventListener()PostDetailsActivity.java- Firebase query builders for commentsCovidStatus/WorldDataActivity.java- API request building
-
Singleton Pattern - Global Firebase service instances
FirebaseAuth.getInstance()(throughout all auth activities/fragments)FirebaseDatabase.getInstance()(all data operations)FirebaseStorage.getInstance()(image uploads)FirebaseMessagingservice instance (notifications)
-
Repository Pattern - Data access abstraction (via Firebase)
Models/ModelPost.java- Data access for postsModels/ModelChat.java- Chat data repositoryBloodDonationMap/DonorModel.java- Donor data access- Firebase database acts as data repository layer
| Technology | Purpose | Files Used |
|---|---|---|
| Firebase Authentication | User login/signup with OAuth 2.0 | SignInFragment.java, SignUpFragment.java, RegisterActivity.java |
| Firebase Realtime Database | Real-time data synchronization | HomeFragment.java, ChatActivity.java, PostDetailsActivity.java, AdapterPosts.java |
| Firebase Firestore | NoSQL document storage | ProfileFragment.java, TheirProfileActivity.java |
| Firebase Cloud Storage | Media file hosting (images/documents) | AddPostActivity.java, CreatePostFragment.java, ProfileFragment.java |
| Firebase Cloud Messaging (FCM) | Push notifications | FirebaseMessaging.java, OreoAndAboveNotification.java, Notifications/Token.java |
| Firebase Remote Config | Dynamic feature flags | DashboardActivity.java |
| Library | Purpose | Files Used |
|---|---|---|
| Volley | HTTP networking & request management | CovidStatus/WorldDataActivity.java, CovidStatus/CountrywiseDataActivity.java |
| GSON | JSON serialization/deserialization | CovidStatus/WorldDataActivity.java, CovidStatus/PerCountryData.java |
| Firebase UI Database | Simplified Firebase data binding | AdapterPosts.java, AdapterChat.java, Adapters/RecyclerViewAdapter.java |
| Component | Purpose | Files Used |
|---|---|---|
| Material Design Components | Modern UI elements | DashboardActivity.java, ChatActivity.java, ProfileFragment.java |
| AndroidX AppCompat | Material Design support | All Activities and Fragments |
| ConstraintLayout | Responsive layouts | All layout XML files in /res/layout/ |
| RecyclerView | Efficient list rendering with pagination | AdapterPosts.java, AdapterChat.java, AdapterComments.java, HomeFragment.java |
| CardView | Card-based UI containers | Layout files for posts, chats, profiles |
| ViewPager | Fragment-based tab navigation | DashboardActivity.java, ProfileFragment.java |
| BottomNavigationView | Tab-based bottom navigation | DashboardActivity.java, activity_dashboard.xml |
| Library | Purpose | Files Used |
|---|---|---|
| Glide | Image loading, caching, and transformations | AdapterPosts.java, ProfileFragment.java, TheirProfileActivity.java, AdapterChat.java, AdapterComments.java |
| Picasso | Advanced image manipulation | AddPostActivity.java, CreatePostFragment.java |
| CircleImageView | Circular profile image views | ProfileFragment.java, TheirProfileActivity.java, ChatListFragment.java, AdapterChat.java |
| Service | Purpose | Files Used |
|---|---|---|
| Google Maps SDK | Geographic donor mapping & visualization | BloodDonationMap/MapsActivity.java, BloodDonationMap/DonorList.java |
| Google Location Services | GPS coordinate retrieval | BloodDonationMap/DonorForm.java, BloodDonationMap/MapsActivity.java |
| Google Play Services Auth | OAuth authentication | SignInFragment.java, RegisterActivity.java |
| Library | Purpose | Files Used |
|---|---|---|
| EazeGraph | Chart rendering for COVID-19 stats | CovidStatus/WorldDataActivity.java, CovidStatus/PerCountryData.java |
| NineOldAndroids | Animation support library | All Activities and Fragments (animation support) |
| SwipeRefreshLayout | Pull-to-refresh functionality | HomeFragment.java, CovidStatus/WorldDataActivity.java, CovidStatus/CountrywiseDataActivity.java |
| Feature | Library | Files Used |
|---|---|---|
| Pagination | Android Paging Library | AdapterPosts.java, HomeFragment.java |
| Firebase Pagination | FirebaseRecyclerPagination | AdapterPosts.java, AdapterChat.java |
| Navigation Drawer | DuoNavigationDrawer | DashboardActivity.java, CustomDrawer/DrawMenuAdapter.java |
| Network Detection | NoInternet Library | DashboardActivity.java |
| Multi-Dex Support | Android Multidex | AndroidManifest.xml, build.gradle |
| Framework | Purpose | Files Used |
|---|---|---|
| JUnit | Unit testing | src/test/java/com/naimur978/forum/ExampleUnitTest.java |
| AndroidX Test Runner | Instrumented testing | src/androidTest/java/com/naimur978/forum/ExampleInstrumentedTest.java |
MedConnect Forum is available for download:
Available in: /apk_file/forum-1.0.apk
Compatibility: Android and above
- Download the APK file
- Enable "Install from Unknown Sources" in your Android settings
- Open the downloaded APK file
- Follow the installation prompts
MedConnect Forum is a comprehensive healthcare platform that combines:
- Community-driven medical discussion forum
- Blood donation coordination system
- Real-time COVID-19 tracking dashboard
- Secure user-to-user messaging system
- Email/Password Authentication via Firebase Auth (
SignInFragment.java) - Google OAuth 2.0 integration (
SignInFragment.java,RegisterActivity.java) - Password Recovery system with email verification (
ResetPasswordFragment.java) - Session Management using SharedPreferences (
SignInFragment.java,DashboardActivity.java) - Token-Based Authentication for secure API access (
Notifications/Token.java,Notifications/FirebaseMessaging.java) - Auto-Login on app restart with stored tokens (
DashboardActivity.java,SplashActivity.java)
Implementation:
SignInFragment.java- Login UI with Firebase AuthenticationSignUpFragment.java- Registration UI with validationResetPasswordFragment.java- Password recovery with email linkRegisterActivity.java- Auth container managing fragments- Regex validation:
[a-zA-Z0-9._-]+@[a-z]+.[a-z]+
- Create Posts with rich text, images, and media attachments
- View Posts with infinite scrolling and pagination
- Real-time Comments with Firestore listeners
- Like/Vote System with atomic Firebase transactions
- Post Search & Filtering by keywords and categories
Technical Implementation:
HomeFragment.java- Main feed with RecyclerView paginationAddPostActivity.java&CreatePostFragment.java- Post editorPostDetailsActivity.java- Single post view with commentsAdapterPosts.java- Efficient list rendering- Data Flow: User Input β Firebase Write β Listener Callback β UI Refresh
- Image Handling: Glide caching (memory + disk) with lazy loading
- Database: Realtime Database with
orderBy(timestamp)andlimit()queries
Models:
ModelPost: pId, pTitle, pDescr, pLikes, pComments, pImage, pTime, uid, uEmail, uDp, uName
ModelComment: commentId, userId, text, timestamp, userInfo
- One-to-One Chat with real-time message delivery
- Conversation History with persistent storage
- Online Status Indicator showing user availability
- Typing Detection pattern for user feedback
- Message Timestamps for chronological ordering
- Notification Integration for new messages
Technical Implementation:
ChatActivity.java- Main messaging interfaceChatListFragment.java- Conversation listAdapterChat.java&AdapterChatlist.java- Message rendering- Firebase Listeners: Real-time sync without blocking UI
- Threading: Callbacks handle async operations automatically
- Push Notifications: FCM triggers when app is backgrounded
Models:
ModelChat: messageId, senderId, receiverId, message, timestamp
ModelChatlist: conversationId, userId, lastMessage, lastTimestamp
- Donor Registration with blood group and location capture
- Geographic Donor Mapping using Google Maps
- Proximity-Based Search to find nearby donors
- Blood Group Filtering for quick donor discovery
- Emergency Blood Requests with location broadcasting
- Donor Information System with awareness content
Technical Implementation:
FirstPageActivity.java- Blood donation hubDonorForm.java- Donor registration formDonorList.java- Browse donors with filteringMapsActivity.java- Google Maps integration- Location Services: GPS coordinate retrieval with runtime permissions
- Database Queries: Firebase queries with geolocation filters
- UI: Marker clustering on maps for multiple donors
- Algorithms: Distance calculation for proximity filtering
Data Model:
DonorModel: donorId, name, bloodGroup, latitude, longitude, phone, email
Coordinate: lat, lng
- Global Statistics with real-time case counts
- Country-Wise Comparison with sortable metrics
- Data Visualization using charts and graphs
- Pull-to-Refresh for manual updates
- Country Filtering & Search functionality
Technical Implementation:
WorldDataActivity.java- Global stats dashboardCountrywiseDataActivity.java- Country list viewPerCountryData.java- Detailed statistics- Networking: Volley HTTP client for API requests
- JSON Parsing: GSON for data deserialization
- Visualization: EazeGraph for bar/line/pie charts
- UI Refresh: SwipeRefreshLayout for pull-to-refresh
- Data Update: Real-time synchronization from public COVID APIs
Data Model:
CountrywiseModel: countryName, cases, deaths, recovered, timestamp
- User Profiles with bio, photo, and post history
- Profile Editing with photo upload
- Follow/Follower System for community building
- User Discovery through search and suggestions
- Other User Profiles view for community interaction
Technical Implementation:
ProfileFragment.java- Current user profileTheirProfileActivity.java- View other usersCircleImageView- Circular profile images- Image Caching: Glide for optimized profile photo loading
- Firebase Cloud Messaging (FCM) integration
- Notification Channels support
- Custom Sound & Vibration for alerts
- Deep Linking to specific content via notifications
- Smart Notification Routing based on user context
Technical Implementation:
FirebaseMessaging.java- FCM message handlerOreoAndAboveNotification.java- Notification channel handling- Token Management: Device-specific FCM tokens stored in Firebase
- Payload Parsing: Routing logic for notification types
- SharedPreferences: User notification preferences
| Secure Authentication Interface | User Registration System | Account Recovery Interface |
![]() |
![]() |
![]() |
| Application Navigation Menu | Main Discussion Feed | Detailed Post View |
![]() |
![]() |
![]() |
| User Profile Management | Content Action Interface | Post Creation Interface |
![]() |
![]() |
![]() |
| Community Member Directory | Active Conversations | Real-time Messaging Interface |
![]() |
![]() |
![]() |
| Content Management System | Media Selection Interface | Blood Donation Platform |
![]() |
![]() |
![]() |
| Donation Awareness Section | Registered Donor Directory | Advanced Search Interface |
![]() |
![]() |
![]() |
| Donor Management System | Geographic Donor Mapping | Global COVID-19 Statistics |
![]() |
![]() |
![]() |
| Global Region Directory | Regional COVID-19 Analytics | Network Status Interface |
![]() |
![]() |
![]() |
- Real-time Data Synchronization via Firebase Listeners and Firestore
- Offline Capability with automatic sync on reconnection
- Push Notifications via Firebase Cloud Messaging (FCM)
- Google Maps Integration for geolocation services
- Firebase Backend with multiple services (Auth, DB, Storage, Messaging)
- Modern Material Design UI with responsive ConstraintLayout
- Efficient List Rendering with RecyclerView and pagination
- Image Caching with Glide for performance optimization
- Network Detection to handle offline scenarios gracefully
- Multi-DPI Support for various Android devices
- Image Caching - Glide memory + disk caching reduces network calls
- Pagination - Load data in chunks instead of all at once
- Firebase Listeners - Event-driven updates instead of polling
- RecyclerView ViewHolder Pattern - Efficient view recycling
- Offline Persistence - Firebase local sync reduces server load
- Multi-Dex - Optimized method loading for 65k+ methods
- ProGuard - Code obfuscation reduces APK size
- Separation of Concerns - Each class has single responsibility
- Example:
AdapterPosts.javaonly handles post list rendering, not data fetching
- Example:
- Model-View-Controller - Clear separation of data, UI, and logic
- Models:
/Models/package (ModelPost.java,ModelChat.java, etc.) - Views: Activities and Fragments (
DashboardActivity.java,HomeFragment.java, etc.) - Controllers: Business logic in activities (
PostDetailsActivity.java,ChatActivity.java) - Data Layer: Firebase database operations
- Models:
- Constant Naming -
SNAKE_CASEfor constants - Method Naming -
camelCasefor methods and variables - Resource Naming - Descriptive IDs like
btn_send_post,tv_user_name
- Activities -
XxxActivity.java(e.g.,ChatActivity.java,DashboardActivity.java,RegisterActivity.java) - Fragments -
XxxFragment.java(e.g.,HomeFragment.java,CreatePostFragment.java,ChatListFragment.java,ProfileFragment.java) - Adapters -
AdapterXxx.java(e.g.,AdapterPosts.java,AdapterChat.java,AdapterComments.java) - Models -
ModelXxx.java(e.g.,ModelPost.java,ModelChat.java,ModelComment.java) - Views - Custom views in
/views/package - Modules - Feature-based packages (
BloodDonationMap/,CovidStatus/,Notifications/,CustomDrawer/) - Config -
google-services.jsonfor Firebase configuration
- Java programming language (All
.javafiles) - Android SDK (
build.gradle,AndroidManifest.xml) - Gradle build system with multi-dex support (
app/build.gradle,settings.gradle) - AndroidX modern framework libraries (All Activities and Fragments)
-
Firebase Services
- Authentication (
SignInFragment.java,SignUpFragment.java) - Realtime DB (
HomeFragment.java,ChatActivity.java,PostDetailsActivity.java) - Firestore (
ProfileFragment.java,TheirProfileActivity.java) - Storage (
AddPostActivity.java,CreatePostFragment.java) - Messaging (
FirebaseMessaging.java) - Analytics & Crash Reporting (
DashboardActivity.java)
- Authentication (
-
Google APIs
- Maps (
BloodDonationMap/MapsActivity.java,BloodDonationMap/DonorList.java) - Location Services (
BloodDonationMap/DonorForm.java) - OAuth 2.0 (
SignInFragment.java,RegisterActivity.java)
- Maps (
-
REST APIs - COVID-19 data via Volley + GSON
CovidStatus/WorldDataActivity.javaCovidStatus/CountrywiseDataActivity.javaCovidStatus/PerCountryData.java
-
Material Design 2.0 - Modern design system (All layout files)
-
RecyclerView - Efficient list rendering with pagination
AdapterPosts.java,AdapterChat.java,AdapterComments.javaHomeFragment.java,ChatListFragment.java
-
Fragments - Modular UI components
HomeFragment.java,CreatePostFragment.java,ChatListFragment.java,ProfileFragment.java,UsersFragment.java
-
ViewPager - Swipeable tab navigation (
DashboardActivity.java,ProfileFragment.java) -
Glide - Image loading and caching
AdapterPosts.java,AdapterChat.java,ProfileFragment.java,AdapterComments.java
- MVC -
DashboardActivity.java,HomeFragment.java, Models package - Observer -
HomeFragment.java,ChatActivity.java,PostDetailsActivity.java - Adapter -
AdapterPosts.java,AdapterChat.java,AdapterComments.java,CountrywiseAdapter.java - Builder -
HomeFragment.java(Firebase query builders) - Singleton - Firebase instances throughout app
- Repository - Models package (
ModelPost.java,ModelChat.java,DonorModel.java)























