Gunshot-Locating Intelligent Detection & Autonomous Reporting (GLIDAR) is a hackathon prototype for collecting incident telemetry from ESP32 nodes, forwarding data through fallback routing, and recording events on a Flask backend.
The project started as a low-cost, distributed safety system:
- Place multiple ESP32 nodes across an area.
- Let each node report incident telemetry to a central backend.
- If the backend is temporarily unreachable, route data through a nearby node instead of dropping it.
- Keep an event trail for later analysis and response.
The core goal was reliability under unstable network conditions using simple hardware and a lightweight software stack.
This project currently has three working areas:
prototype1/backend/main.py- Flask receiver that accepts JSON onPOST /dataand appends records todata.csv.prototype1/esp/main.py- MicroPython logic for ESP32 periodic reporting and ESP-to-ESP fallback forwarding.simulation/scene1.py,simulation/new1.py- Manim scenes for graph/transformation visualization.
- Overall maturity: prototype stage.
- Backend: minimal and functional for local ingestion.
- ESP firmware: concept implemented, but hard-coded network/server values and basic error handling keep it lab-only.
- Simulation: useful for visuals/demo; separate from telemetry pipeline.
- Documentation: now updated with runnable setup and known limits.
- Python 3.10+
- uv installed
From GLIDAR:
uv run --with flask python prototype1/backend/main.pyThe API listens on:
POST http://0.0.0.0:5000/data
Example request:
curl -X POST http://127.0.0.1:5000/data \
-H "Content-Type: application/json" \
-d "{\"id\":\"ESP32_1\",\"routed\":false,\"timestamp\":\"2026-01-01T10:00:00\"}"Data is appended to data.csv in the current working directory.
From GLIDAR:
uv run --with manim --with numpy manim -pql simulation/scene1.py DynamicGraphTransformation
uv run --with manim --with numpy manim -pql simulation/new1.py GraphTransformationRendered media is written under the simulation/media/ tree.
prototype1/esp/main.py targets MicroPython and is not executable with standard CPython.
Before flashing/running on hardware:
- Update Wi-Fi credentials and server URLs.
- Confirm reachable backend host and port on your LAN.
- Validate payload keys and timestamp serialization format expected by the backend.
For a stable deployment, prioritize:
- Move credentials and endpoints to environment variables or device config.
- Add payload schema validation and structured logging on the Flask API.
- Replace CSV append-only storage with a database (SQLite/PostgreSQL).
- Add authentication between ESP clients and backend.
- Package backend with a production WSGI server and reverse proxy.
- No test suite or CI checks.
- No dependency lockfile (
pyproject.toml/requirements.txt) yet. - Backend has no auth, validation, or rate limiting.
- ESP fallback logic is tightly coupled to static IPs.
- Simulation code does not yet integrate with real telemetry.