How mika-collins/seng401-project-mawc works
The repository implements “The Floor is Lava,” a Wi-Fi scan-based indoor localization and heatmap application. Raspberry Pi endpoints capture Wi-Fi observations and send them to a Flask API, which stores scans and provides account, endpoint-health, floorplan, and location-related API capabilities; the Vue client supports signup/login, floorplan setup, endpoint placement, and live visualization. The README and sampled code support the scan-to-storage and client-to-API flows. The API-to-trilateration route wiring is not established by the excerpts, so that connection is left out.
Main entry points: app.py Flask API · HeatmapPage.vue Heatmap Page · python_wifi_script.py Raspberry Pi · index.js Page Router
Components 20
Wi-Fi Capture
- Raspberry Pi
endpoint/python_wifi_script.py - Monitor Setup
endpoint/set_wifi_monitor.py - Scan Parser
endpoint/parse_tcpdump_json.py - Scan Sender
endpoint/send_tcpdump.py
API Services
- Flask API
server/app.py - Request Validation
server/validators.py - Password Handling
server/passwords.py - Database Access
server/db.py - Floorplan Data
server/app.py
Localization
- Position Estimation
server/trilateration.py
Web Client
- Vue App
client/src/App.vue - Page Router
client/src/router/index.js - Login Page
client/src/views/LoginPage.vue - Signup Page
client/src/views/SignupPage.vue - Heatmap Page
client/src/views/HeatmapPage.vue - Endpoint Status
client/src/components/PiStatusBar.vue - Feature Tutorial
client/src/components/TutorialModal.vue
Other components
- Room User
- Wi-Fi Devices
- PostgreSQL
Connections 22
- Room User → Vue App: uses
- Wi-Fi Devices → Raspberry Pi: emit Wi-Fi signals
- Raspberry Pi → Monitor Setup: sets monitor mode
- Raspberry Pi → Scan Parser: parses captures
- Raspberry Pi → Scan Sender: sends observations
- Scan Sender → Flask API: posts scans
- Vue App → Page Router: renders routes
- Page Router → Login Page: routes to
- Page Router → Signup Page: routes to
- Page Router → Heatmap Page: routes to
- Login Page → Flask API: submits login
- Signup Page → Flask API: registers account
- Heatmap Page → Flask API: requests heatmap data
- Heatmap Page → Flask API: uploads floorplan
- Heatmap Page → Endpoint Status: displays status
- Heatmap Page → Feature Tutorial: opens tutorial
- Flask API → Request Validation: validates input
- Flask API → Password Handling: verifies credentials
- Flask API → Database Access: reads and writes
- Database Access → PostgreSQL: queries and stores
- Position Estimation → PostgreSQL: reads scan rows
- Flask API → Floorplan Data: handles floorplan routes