Index

Disaster Relief Resource Tracker

A serverless platform for coordinating disaster relief. People request help, relief centres track their stock, and administrators match one to the other.

Built with
AWS Lambda, API Gateway, DynamoDB, S3, Python, JavaScript
Source
GitHub

Overview

Three kinds of people use it. Anyone can submit a help request from a public form and check on it later with a reference. Staff at a relief centre log in to keep their inventory current. Administrators see every centre and every request, and assign each request to a centre that can handle it.

It runs entirely on AWS with no servers to manage: a static front end on S3, a REST API on API Gateway, eleven Python Lambda functions, and four DynamoDB tables.

Worth noting

  • One function per action

    Each API route has its own Lambda function with its own IAM role, granting only the DynamoDB permissions that function needs.

  • Low stock without a table scan

    Inventory items carry a low-stock flag backed by a secondary index, so critical shortages come back from a query instead of a scan of everything.

  • Urgency that sorts itself

    Urgency is stored as a number from one to four, so DynamoDB returns the most urgent requests first.

  • A request has a lifecycle

    Requests move from pending to assigned to resolved. Assigning one records exactly which centre has taken it on.

  • Tests that do not need AWS

    The Lambda handlers are tested locally against mocked tables. A separate opt-in suite checks the deployed API, and never writes data unless explicitly allowed to.

Limits

Authentication is deliberately simple, with hashed passwords and a demo session token; a production version would use Cognito. Results are not paginated, and concurrent inventory updates are not yet guarded with conditional writes.