Privacy-first serverless system for mapping quiet places using ephemeral cloud data.
Forgetting is enforced by infrastructure, not discipline.
VOID-MAP captures ambient noise levels from users' microphones, classifies them into silence buckets, stores them transiently in DynamoDB (30-minute TTL), and serves aggregated "quiet scores" per geographic tile. No audio is recorded β only noise level categories, which are automatically deleted after 30 minutes.
Base URL: https://nywrqf0pul.execute-api.us-east-1.amazonaws.com
| Endpoint | Method | Description |
|---|---|---|
/signal |
POST |
Submit an anonymous noise reading |
/quiet/{geo} |
GET |
Get the quiet score for a geohash tile |
Quick test:
# Submit a signal
curl -X POST https://nywrqf0pul.execute-api.us-east-1.amazonaws.com/signal \
-H "Content-Type: application/json" \
-d "{\"geo\": \"tdr5\", \"noise_bucket\": \"quiet\", \"ts\": $(date +%s)}"
# Get quiet score
curl https://nywrqf0pul.execute-api.us-east-1.amazonaws.com/quiet/tdr5
Clean, minimal interface β one button to measure silence
Result card showing noise level, RMS/Var values, geohash, and anonymous send confirmation
Client (browser)
β POST /signal
API Gateway (HTTP API)
β
Write Lambda β DynamoDB (TTL = 30 min)
β
Read Lambda β GET /quiet/{geo}
β
API Gateway
β
Client / Consumer
See architecture.md for details.
VOID-MAP/
βββ api/
β βββ routes.md # API route definitions & schemas
βββ architecture/
β βββ architecture.md # System design & component diagram
βββ client/
β βββ index.html # Browser client β mic capture + signal POST
βββ lambdas/
β βββ write_signal/
β β βββ handler.py # Validate & store silence signals
β βββ read_aggregation/
β βββ handler.py # Aggregate & return quiet scores
βββ terraform/
β βββ main.tf # DynamoDB, Lambda, API Gateway, IAM resources
β βββ variables.tf # Configurable variables
β βββ outputs.tf # API endpoint & resource ARN outputs
β βββ providers.tf # AWS & Archive provider config
βββ phases/
βββ phase-0.md # Design & documentation
βββ phase-1.md # Infrastructure setup
βββ phase-2.md # Write path implementation
βββ phase-3.md # Read path & aggregation
- Python 3.9+
- AWS CLI configured with appropriate credentials
- A DynamoDB table named
voidmap_ephemeral_signalswith:- Partition key:
geo(String) - Sort key:
ts(String) β composite"timestamp#uuid" - TTL attribute:
expires_at
- Partition key:
Open client/index.html in any modern browser, or serve it locally:
cd client
python -m http.server 8000Then visit http://localhost:8000.
You can deploy the entire infrastructure automatically using Terraform (Recommended) or deploy the code manually.
- Make sure you have Terraform installed.
- Initialize and apply the configuration:
cd terraform terraform init terraform apply - Update the
API_URLinclient/index.htmlwith theapi_endpointoutput from Terraform.
Package each Lambda handler and deploy via the AWS Console or CLI:
cd lambdas/write_signal
zip write_signal.zip handler.py
aws lambda update-function-code --function-name voidmap-write-signal --zip-file fileb://write_signal.zip
cd ../read_aggregation
zip read_aggregation.zip handler.py
aws lambda update-function-code --function-name voidmap-read-aggregation --zip-file fileb://read_aggregation.zip{
"ts": 1710000000,
"geo": "tdr5",
"noise_bucket": "quiet"
}{
"geo": "tdr5",
"quiet_score": 0.85,
"confidence": "medium",
"window_minutes": 30
}See routes.md for full request/response schemas.
πΊοΈ Interactive Quiet Map
- Real-time heatmap visualization of quiet scores across geohash tiles
- Leaflet/Mapbox integration with color-coded overlays (green = quiet, red = loud)
π Richer Analytics
- Historical trend tracking per geohash (requires opt-in relaxed TTL for aggregate-only data)
- Time-of-day patterns β discover when places are quietest
- Neighboring geohash expansion for broader area queries
π Smart Notifications
- "Your favorite park is quiet right now" β push alerts based on user-defined watch areas
- Noise spike detection per tile
π± Mobile-First Enhancements
- Progressive Web App (PWA) with offline support and install prompt
- Background periodic measurements (with user consent)
- Haptic feedback on measurement completion
π Infrastructure Hardening
- Terraform IaC for one-click deployment (DynamoDB, Lambda, API Gateway, IAM) β see
terraform/ - API Gateway throttling at 50 req/s sustained, 100 burst per route
- CloudWatch dashboards for Lambda metrics and DynamoDB throughput
- Automated integration tests with mocked DynamoDB
- Per-IP rate limiting via API Gateway usage plans
π Community Features
- Public leaderboard of quietest neighborhoods (aggregated, non-identifying)
- Crowd-sourced quiet spot recommendations
- Embeddable widget for third-party sites
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes
- Push and open a Pull Request
Please follow the project's privacy-first philosophy β no user-identifiable data should be logged, stored, or transmitted.
This project is licensed under the MIT License.