A web-based emergency reporting and security advisory platform built using Flask and Google Maps API.
This system enables users to report distress incidents, visualize locations on an interactive map, and receive security alerts.
The application employs the Vincenty formula (inverse method) for high-precision geodesic distance calculations between coordinates — essential for accurate response routing and geolocation tracking.
- 📍 Location-Based Reporting: Users can report distress or suspicious activities using their GPS location.
- 🗺️ Google Maps Integration: Real-time visualization of reported incidents on an interactive map.
- 🧭 Vincenty Distance Calculation: Accurate geodesic distance measurement between two coordinates (latitude/longitude).
- 🔐 User Authentication: Secure login and registration using
Flask-Login. - 💾 Database Integration: Persistent storage of user and incident data with
Flask-SQLAlchemyand MySQL. - 📢 Security Advisory Broadcasts: Display system-wide alerts and emergency notifications.
| Component | Description |
|---|---|
| Backend Framework | Flask (Python) |
| Frontend | HTML, CSS, Bootstrap, JavaScript, Google Maps API |
| Database | MySQL |
| Distance Calculation | Vincenty Formula (Inverse Method) |
| Authentication | Flask-Login |
| ORM | SQLAlchemy |
- Clone the repository
git clone https://github.com/yourusername/drsas.git
cd drsas-
Create and activate a virtual environment (recommended)
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Configure the database Update your database URI in the config.py file:
SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://username:password@localhost/distress_db' -
Run the application Update your database URI in the config.py file:
flask run
The app will be available at: http://127.0.0.1:5000
click==8.1.7
Flask==2.2.5
Flask-Login==0.6.3
Flask-SQLAlchemy==2.5.1
importlib-metadata==6.7.0
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
mysql-connector-python==8.0.29
protobuf==4.24.4
SQLAlchemy==1.3.24
typing_extensions==4.7.1
Werkzeug==2.2.3
zipp==3.15.0The Vincenty inverse method computes the geodesic distance between two latitude/longitude pairs on an ellipsoidal Earth model. This provides millimeter-level accuracy, superior to simple spherical formulas like Haversine — making it ideal for emergency response applications where precision matters.
🔔 Push notifications for nearby alerts
📱 Mobile app integration
🧭 Route optimization for emergency responders
🤝 Contributing Contributions, suggestions, and improvements are welcome! Feel free to open an issue or submit a pull request.
👨💻 Author
Selim Adekola 📧 salimdotpy@gmail.com 📞 +2348076738293