Skip to content

Latest commit

Β 

History

81 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MedConnect Forum

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.

πŸ—οΈ Project Architecture

Design Patterns Used

  • 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
  • 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 comments
    • CovidStatus/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)
    • FirebaseMessaging service instance (notifications)
  • Repository Pattern - Data access abstraction (via Firebase)

    • Models/ModelPost.java - Data access for posts
    • Models/ModelChat.java - Chat data repository
    • BloodDonationMap/DonorModel.java - Donor data access
    • Firebase database acts as data repository layer

Technology Stack

Backend & Database

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

Networking & API Communication

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

UI & Layout Framework

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

Image Processing & Media

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

Location & Mapping

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

Data Visualization

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

Advanced Features

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

Testing

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

πŸ“² Installation

Direct APK Download

MedConnect Forum is available for download:

Download APK

Available in: /apk_file/forum-1.0.apk
Compatibility: Android and above

Installation Instructions

  1. Download the APK file
  2. Enable "Install from Unknown Sources" in your Android settings
  3. Open the downloaded APK file
  4. Follow the installation prompts

πŸ“± Application Overview

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

✨ Key Features

1. User Authentication

  • 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 Authentication
  • SignUpFragment.java - Registration UI with validation
  • ResetPasswordFragment.java - Password recovery with email link
  • RegisterActivity.java - Auth container managing fragments
  • Regex validation: [a-zA-Z0-9._-]+@[a-z]+.[a-z]+

2. Discussion Forum (Core Feature)

  • 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 pagination
  • AddPostActivity.java & CreatePostFragment.java - Post editor
  • PostDetailsActivity.java - Single post view with comments
  • AdapterPosts.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) and limit() queries

Models:

ModelPost: pId, pTitle, pDescr, pLikes, pComments, pImage, pTime, uid, uEmail, uDp, uName
ModelComment: commentId, userId, text, timestamp, userInfo

3. Real-Time Messaging System

  • 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 interface
  • ChatListFragment.java - Conversation list
  • AdapterChat.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

4. Blood Donation Platform

  • 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 hub
  • DonorForm.java - Donor registration form
  • DonorList.java - Browse donors with filtering
  • MapsActivity.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

5. COVID-19 Tracker Dashboard

  • 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 dashboard
  • CountrywiseDataActivity.java - Country list view
  • PerCountryData.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

6. User Profiles & Discovery

  • 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 profile
  • TheirProfileActivity.java - View other users
  • CircleImageView - Circular profile images
  • Image Caching: Glide for optimized profile photo loading

7. Push Notifications & Real-Time Alerts

  • 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 handler
  • OreoAndAboveNotification.java - Notification channel handling
  • Token Management: Device-specific FCM tokens stored in Firebase
  • Payload Parsing: Routing logic for notification types
  • SharedPreferences: User notification preferences

Screenshots

Authentication & Security

Secure Authentication Interface User Registration System Account Recovery Interface

Core Navigation & Content

Application Navigation Menu Main Discussion Feed Detailed Post View

User Interaction & Content Creation

User Profile Management Content Action Interface Post Creation Interface

Communication System

Community Member Directory Active Conversations Real-time Messaging Interface

Content Management & Blood Donation

Content Management System Media Selection Interface Blood Donation Platform

Blood Donation Features

Donation Awareness Section Registered Donor Directory Advanced Search Interface

Location & COVID-19 Tracking

Donor Management System Geographic Donor Mapping Global COVID-19 Statistics

COVID-19 Information System

Global Region Directory Regional COVID-19 Analytics Network Status Interface

Documentation

Technical Features

  • 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

πŸ“Š Performance Optimizations

  1. Image Caching - Glide memory + disk caching reduces network calls
  2. Pagination - Load data in chunks instead of all at once
  3. Firebase Listeners - Event-driven updates instead of polling
  4. RecyclerView ViewHolder Pattern - Efficient view recycling
  5. Offline Persistence - Firebase local sync reduces server load
  6. Multi-Dex - Optimized method loading for 65k+ methods
  7. ProGuard - Code obfuscation reduces APK size

πŸ“– Development Guidelines

Code Organization

  • Separation of Concerns - Each class has single responsibility
    • Example: AdapterPosts.java only handles post list rendering, not data fetching
  • 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
  • Constant Naming - SNAKE_CASE for constants
  • Method Naming - camelCase for methods and variables
  • Resource Naming - Descriptive IDs like btn_send_post, tv_user_name

Naming Conventions

  • 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.json for Firebase configuration

πŸ“Œ Summary of Technologies & Techniques

Core Technologies

  • Java programming language (All .java files)
  • 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)

Backend & Data

  • 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)
  • Google APIs

    • Maps (BloodDonationMap/MapsActivity.java, BloodDonationMap/DonorList.java)
    • Location Services (BloodDonationMap/DonorForm.java)
    • OAuth 2.0 (SignInFragment.java, RegisterActivity.java)
  • REST APIs - COVID-19 data via Volley + GSON

    • CovidStatus/WorldDataActivity.java
    • CovidStatus/CountrywiseDataActivity.java
    • CovidStatus/PerCountryData.java

UI/UX

  • Material Design 2.0 - Modern design system (All layout files)

  • RecyclerView - Efficient list rendering with pagination

    • AdapterPosts.java, AdapterChat.java, AdapterComments.java
    • HomeFragment.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

Design Patterns Used

  • 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)

About

I created a comprehensive medical forum for open discussions on health issues, blood donation coordination, and emergency assistance. The platform also provides daily COVID-19 statistics, fostering a community dedicated to health awareness and support.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages