An Android application for real-time flood reporting, tracking, and community response coordination in San Antonio, TX.
SAFloodResponse is a community-driven flood reporting and response coordination platform designed to help San Antonio residents stay informed during flood events. Built with Jetpack Compose and powered by Firebase services, this app enables users to:
- Report floods with exact location, severity, and photographic evidence
- View real-time flood reports on an interactive map
- Participate in community discussions about flood-related topics
- Confirm or deny existing flood reports to validate their accuracy
- Access comprehensive flood reports with detailed information
- Submit detailed flood reports with:
- Location (automatic or manual coordinates)
- Severity level (low, medium, high)
- Water depth measurements
- Road closure status
- Photo evidence uploads
- Additional contextual details
- Real-time visualization of all active flood reports
- Color-coded markers indicating flood severity
- Detailed report view with confirmation statistics
- Focus on San Antonio region with appropriate zoom levels
- Create and join discussion threads
- Link discussions to specific flood reports
- Categorize discussions (General, Flood Report, Help Request, Announcement)
- Tag system for better organization and searchability
- User account creation and management
- Profile customization with photos
- Role-based permissions (Regular users, Volunteers, Administrators)
- Community-driven report verification through confirm/deny actions
- Statistical tracking of confirmations and denials
- Status tracking (pending, active, resolved)
- Firebase Authentication: User authentication and account management
- Cloud Firestore: Real-time NoSQL database for reports and discussions
- Firebase Storage: Media storage for user-submitted photos
- Firebase App Check: Security for backend resources
- Jetpack Compose: Modern declarative UI toolkit for Android
- MVVM Architecture: Clean separation of UI, business logic, and data
- Kotlin Coroutines: Asynchronous programming for smooth user experience
- Google Maps SDK: Interactive mapping features
- FloodReportViewModel: Manages flood report data and operations
- DiscussionViewModel: Handles discussion threads and messages
- FloodMapViewModel: Controls map visualization and interaction
- FirestoreRepositories: Data access layer for Firebase communication
- Android Studio Iguana (2023.2) or newer
- JDK 11 or higher
- Google Maps API key
- Firebase project with Authentication, Firestore, and Storage enabled
- Clone this repository
- Create a
local.propertiesfile in the root directory with:
sdk.dir=YOUR_ANDROID_SDK_PATH
MAPS_API_KEY=YOUR_GOOGLE_MAPS_API_KEY
- Create and download
google-services.jsonfrom your Firebase project console and place it in theappdirectory - Build and run the application
The application supports three user roles with different permissions:
- Regular Users: Can report floods, participate in discussions, and request/offer help
- Administrators: Can moderate discussions, verify reports, and perform all user actions
The project includes comprehensive test coverage:
- JUnit tests for repositories and ViewModels
- Mock-based testing using MockK library
- Coroutine testing with Turbine and kotlinx-coroutines-test