A mobile platform designed to help residential pool owners in South Africa maintain their pools efficiently while reducing water waste, lowering costs, and connecting them with trusted local service providers.
Tip
Version alpha 1.1 is ready for testing. Download the apk here.
- Project Overview
- Problem Domain
- Project Members
- Objectives
- Features
- System Architecture
- Database Design
- Workflow
- Technology Stack
- Installation
- Usage
- Contributing
- License
- Future Enhancements
SplashScreen is a solution tailored to the unique challenges faced by South African pool owners. The system combines:
- DIY water quality monitoring.
- Digital maintenance guidance.
- A transparent service marketplace connecting homeowners with verified providers.
This platform addresses the Pool Maintenance Dilemma by reducing inefficiencies, saving time and water, and improving overall reliability for homeowners.
South Africa faces an ongoing water scarcity crisis, with an average annual rainfall of only 464 mm, significantly below the global average of 860 mm. Urban and suburban municipalities often impose strict water restrictions and higher tariffs.
There are approximately 800,000 residential swimming pools, each requiring 30,000 to 60,000 litres of water. The main challenge is not the existence of pools, but their inefficient and inconsistent maintenance, which can result in water waste, costly mistakes, and missed regulatory compliance.
Key challenges include:
- Maintenance Complexity: Balancing pH, chlorine, and alkalinity, especially with interruptions like load shedding.
- Time Constraints: Busy homeowners, frequent travellers, and holiday property owners often rely on professional services.
- Scattered Service Market: Finding reliable, verified service providers is challenging, as platforms are decentralized.
This project was completed by the following group members:
-
Line Redpath

GitHub Profile: Line's GitHub -
Juanette Viljoen

GitHub Profile: Juanette's GitHub -
Tinotenda Mhedziso

GitHub Profile: Tino's GitHub
- Provide a locally tailored, DIY pool maintenance tool.
- Track water quality and maintenance history.
- Integrate weather, load shedding, and municipal restriction data for intelligent guidance.
- Create a centralised marketplace for service providers and pool products.
- Minimise water waste and improve homeowner compliance with regulations.
- Offer service providers a structured platform to grow their business.
For Pool Owners:
- Register and manage multiple pools.
- Record water quality measurements.
- Receive alerts for chemical maintenance, load shedding, and municipal restrictions.
- Schedule professional service bookings.
- Purchase chemicals and equipment directly from providers.
For Service Providers:
- Create profiles and list services offered.
- Manage bookings and product sales.
- Receive customer reviews and ratings.
System Features:
- Centralised notifications and reminders.
- Integration with weather and load-shedding APIs.
- Compliance tracking with municipal water restrictions.
SplashScreen follows a mobile-first architecture leveraging Firebase:
- Frontend: Mobile interfaces built in Java using Android Studio, designed for homeowners and service providers.
- Backend / Cloud Services: Firebase handles authentication, database management (Firestore), serverless functions (Cloud Functions), and notifications (Cloud Messaging).
- Database: Firestore stores users, pools, services, products, water quality logs, municipal restrictions, and maintenance history.
Key entities and relationships:
- Users & Roles: Differentiate homeowners, providers, and admins.
- Pools: Linked to users, store physical characteristics and location.
- PoolMaintenanceLogs: Records maintenance tasks.
- WaterQualityReadings: Stores pH, chlorine, alkalinity, and temperature measurements.
- WeatherData: Tracks rainfall, temperature, and evaporation for pools.
- LoadSheddingSchedule: Tracks power outages for pump operation.
- MunicipalWaterRestrictions: Stores restrictions by area.
- ServiceProviders & ServicesOffered: Marketplace offerings.
- Bookings & Orders: Tracks service appointments and product purchases.
- Products: Pool chemicals, equipment, and tools.
- Notifications: Reminders and alerts for users.
---
title: SplashScreen - Entity Relationship Diagram
---
erDiagram
USERS ||--o{ POOLS : owns
USERS ||--o{ BOOKINGS : makes
USERS ||--o{ ORDERS : places
USERS ||--o{ NOTIFICATIONS : receives
USERS ||--o{ SERVICEPROVIDERS : registered_as
ROLES ||--o{ USERS : defines
POOLS ||--o{ POOLMAINTENANCELOGS : has
POOLS ||--o{ WATERQUALITYREADINGS : recorded_for
POOLS ||--o{ WEATHERDATA : associated_with
POOLS ||--o{ LOADSHEDDINGSCHEDULE : impacted_by
POOLS ||--o{ MUNICIPALWATERRESTRICTIONS : subject_to
SERVICEPROVIDERS ||--o{ SERVICESOFFERED : offers
SERVICESOFFERED ||--o{ BOOKINGS : booked_in
PRODUCTS ||--o{ ORDERS : included_in
SERVICEPROVIDERS ||--o{ ORDERS : supplies
USERS {
int user_id PK
string name
string email
string password
int role_id FK
string phone
string address
}
ROLES {
int role_id PK
string role_name
string description
}
POOLS {
int pool_id PK
int user_id FK
string pool_type
float water_capacity_liters
string location
string pool_status
}
POOLMAINTENANCELOGS {
int log_id PK
int pool_id FK
date task_date
string task_type
string notes
}
WATERQUALITYREADINGS {
int reading_id PK
int pool_id FK
date reading_date
float pH
float chlorine
float alkalinity
float temperature
}
WEATHERDATA {
int weather_id PK
int pool_id FK
date record_date
float rainfall_mm
float temperature_c
float evaporation_rate
}
LOADSHEDDINGSCHEDULE {
int schedule_id PK
int pool_id FK
date outage_date
time start_time
time end_time
}
MUNICIPALWATERRESTRICTIONS {
int restriction_id PK
int pool_id FK
string municipality_name
string restriction_type
string description
date effective_from
date effective_to
}
SERVICEPROVIDERS {
int provider_id PK
int user_id FK
string company_name
string contact_email
string contact_phone
string location
string certification_details
}
SERVICESOFFERED {
int service_id PK
int provider_id FK
string service_name
string description
float price
string duration
}
BOOKINGS {
int booking_id PK
int user_id FK
int service_id FK
date booking_date
string status
}
PRODUCTS {
int product_id PK
string product_name
string product_type
float price
int stock_quantity
int provider_id FK
}
ORDERS {
int order_id PK
int user_id FK
int product_id FK
date order_date
int quantity
float total_price
string status
}
NOTIFICATIONS {
int notification_id PK
int user_id FK
string message
date created_at
boolean read_status
}
- Register account → add pool(s).
- Enter or sync water quality readings.
- Receive automated recommendations or reminders.
- Browse service marketplace or purchase products.
- Schedule professional maintenance if needed.
- Receive notifications for load shedding, weather changes, or water restrictions.
- Register account → verify identity.
- List services and products.
- Accept bookings and track orders.
- Receive reviews and maintain a service rating.
- Backend calculates chemical recommendations based on water readings and weather data.
- Alerts and reminders are triggered based on maintenance schedules, municipal restrictions, and load shedding.
- Marketplace connects homeowners with providers and tracks bookings and orders.
- Mobile Application: Java, Android Studio
- Backend: Firebase (Authentication, Firestore Database, Cloud Functions, Cloud Messaging)
- Notifications: PostgreSQL (or MySQL)
- APIs: Weather API, Load Shedding Schedule API
- Version Control: GitHub
Coming Soon
- Register as a homeowner or service provider within the app.
- Add your pool(s) and manually record water quality readings or maintenance logs.
- Receive notifications and reminders for chemical adjustments, municipal water restrictions, and load shedding events.
- Browse the service marketplace to book professional maintenance or purchase chemicals and equipment.
- Track historical maintenance data, monitor water usage, and follow suggested best practices for pool upkeep.
This project is licensed under the MIT License. See the LICENSE file for full details.
- IoT Sensor Integration: Enable automated water quality monitoring via smart sensors.
- AI-Based Recommendations: Provide predictive chemical adjustments and maintenance guidance.
- Payment Gateway Integration: Support in-app purchases for chemicals, equipment, and service bookings.
- Multi-Language Support: Expand accessibility across different South African languages.
- Gamification and Rewards: Encourage sustainable water usage through points or achievement systems.
