AWS Builder Center
Saans: A School Air-Safety App on AWS Serverless

Saans: A School Air-Safety App on AWS Serverless

How I solo-built a hackathon project that turns live air-pollution data into clear school-day decisions -Lambda, DynamoDB, SNS, EventBridge, and an AI advisor on the Strands Agents SDK.

Saans: How I Built a School Air-Safety App on AWS Serverless (Solo)

Every winter, North India's air turns hazardous — and schools have no protocol for deciding whether kids should play outside. I built Saans (साँस, "breath") to fix that: live AQI data turned into clear, school-day decisions. Here's how I built it solo on AWS in a weekend.

The problem

When AQI crosses 300, principals guess. Parents worry. Asthmatic kids are the most exposed, and there's no practical daily guidance designed for a school timetable. National AQI apps show a number; nobody tells a teacher what to do at 8 AM.
Saans answers one question every morning: should kids play outside today? — with the evidence to back it up.

What it does

  • Live dashboard — AQI gauge on India's official CPCB scale, pollutant breakdown, 48-hour forecast, and a plain-language daily call (caution advised / indoor day / emergency day).
  • Morning bulletins — every registered school gets a printable bulletin in English and Hindi, with copy-for-WhatsApp, share, and print.
  • "Why this decision?" — every recommendation shows the rule applied, the reference AQI, the 6-hour peak, and the dominant pollutant. No black boxes.
  • Teacher workflow — interactive checklist, acknowledgement log, and an activity planner that finds the cleanest window inside school hours (or honestly says there isn't one).
  • 5:30 AM SMS/email bulletins — the principal gets the bulletin as a text, no app to open.
  • Ask Saans — an AI advisor that answers questions grounded in live advisory data.

Architecture

One Lambda function runs the whole Python FastAPI backend (via Mangum), fronted by API Gateway HTTP API. The React + TypeScript SPA is hosted on S3 behind CloudFront. DynamoDB stores schools and the teacher action log. SNS delivers SMS/email bulletins with confirmation opt-in. EventBridge Scheduler fires the 5:30 AM IST bulletin run daily — with material-change detection, so families are only pinged when the advice actually changes. Everything is defined in a single SAM template, deployed to  ap-southeast-2 .
The honesty engineering mattered as much as the code: all values are labeled "indicative · modelled" (Open-Meteo data isn't an official CPCB 24-hour value), wind explanations stick to dispersion physics instead of blaming sources I can't verify, and the app states plainly that it's planning guidance — not a closure order or medical advice.


The AI advisor: Strands Agents SDK

Ask Saans is built on the Strands Agents SDK (AWS open source). Instead of letting an LLM free-associate about air quality, I gave the agent tools —  get_current_aqi ,  get_forecast_summary ,  get_school_advisory  — that call my own advisory engine. The agent reasons over real data: ask when to hold morning PT and it checks school hours against the forecast instead of guessing. And when no API key is configured, the endpoint transparently falls back to labeled rule-based guidance. The app never pretends to be smarter than it is.

What I learned

  1. Serverless is a solo developer's superpower. Lambda + API Gateway + DynamoDB meant zero servers to babysit;  sam deploy  took the whole stack live in minutes.
  1. Cold starts are the tax. The first Ask Saans reply after idle takes seconds — provisioned concurrency would fix it, but it isn't free-tier friendly.
  1. SNS SMS sandbox is a real wall. You can only text verified numbers until AWS approves your exit request — plan for that if your demo depends on SMS.
  1. IAM is the hardest onboarding.  sam deploy  needs broad permissions and never tells you which one is missing. The happy path shouldn't require admin keys.
  1. IaC drift is a footgun. I set an API key in the Lambda console; a SAM redeploy would have silently wiped it. Now the key goes through the template.

Try it

Built solo for the WeMakeDevs AWS Environmental Hacks (Air track). Breathe easy. 🌱
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article