Inspired by isitsnowinginpdx.com
See blog post for more details
A serverless weather reporting website that answers a single question: "Is it [condition] in [location]?" with a simple YES/NO response
This automated workflow:
- Gets the current website status for a specified location
- Hits the OpenWeatherMap API to get current weather conditions
- If the status has changed → updates the website with new weather conditions
- Runs automatically on a schedule via EventBridge Scheduler
My deployment of this site is here
When the weather is happening (YES!):
When the weather is NOT happening (Nope!):
- S3 - Static website hosting
- CloudFront - Global CDN distribution
- Lambda - HTML generation and site updates (ARM64)
- Step Functions - Orchestrates weather checks and updates
- EventBridge Scheduler - Triggers checks every 10 minutes
- Systems Manager Parameter Store - Stores current site status
- Secrets Manager - Stores OpenWeatherMap API key
- CloudWatch - Alarm for monitoring Step Function failures
- SNS - Optional email notifications (only when
ALERT_EMAILis configured)
Automatically deployed to us-east-1 via CDK crossRegionReferences when DOMAIN_NAME is set.
- Route53 - DNS hosted zone management
- Certificate Manager - SSL certificates for HTTPS
- CloudFront Function - www → non-www redirects
- Runtime: Node.js (version in
.nvmrc) - Language: TypeScript with strict configuration
- Infrastructure: AWS CDK v2 for Infrastructure as Code
- API: OpenWeatherMap One Call API 3.0
See DEPLOYMENT.md for setup instructions, deployment commands, custom domain configuration, and cleanup.
npm run build # Compile TypeScript
npm run test # Run tests
npm run format # Format code with Prettier
npm run lint # Lint code with ESLint
npm run synth # Generate CloudFormation templates
npm run diff # Preview infrastructure changes
npm run deploy # Interactive deployment
npm run deploy:ci # CI/CD deployment (no prompts)
npm run destroy # Delete all stacksConfigure in .env file:
WEATHER_LOCATION_LAT/WEATHER_LOCATION_LON- Coordinates for weather checksLOCATION_NAME- Display name for the locationOPEN_WEATHER_URL- Link to the OpenWeatherMap page for the locationWEATHER_TYPE- Condition to check (snow, rain, etc.)SCHEDULES- Cron expressions for check frequencySTACK_PREFIX- Prefix for all AWS resourcesDOMAIN_NAME- Optional custom domainALERT_EMAIL- Optional email for notifications when site status changes or system failures occur
Set ALERT_EMAIL in .env to receive notifications for weather status changes and Step Function failures via a shared SNS topic.
- Add
ALERT_EMAIL=your-email@example.comto.env - Deploy:
npm run deploy - Confirm the SNS subscription by clicking the link in the confirmation email from AWS
See CONTRIBUTING.md for more info on our guidelines.

