{"slug": "safeair-walk-find-your-clean-air-window-to-step-outside-today", "title": "SafeAir Walk: Find Your Clean-Air Window to Step Outside Today", "summary": "A developer built SafeAir Walk, an open-source web app that identifies the single best 30–60 minute window to go outside each day by combining hourly air-quality and apparent-temperature forecasts from the keyless Open-Meteo API with health-profile-specific thresholds. Safety verdicts for General, Child, Elder, and Asthma profiles are computed deterministically in the app's core module, while a locally run Ollama model (qwen2.5:1.5b or 7b) streams a two-sentence plain-language explanation of the recommendation. The stack is React, Vite, and Ollama, with no sign-ups, API keys, or proprietary AI services.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass](https://dev.to/challenges/hacktoberfest-week1-2026-10-05)*\n\n**SafeAir Walk** tells you the single best 1-hour window to step outside today — based on real air quality forecasts and heat — tailored to your health profile. Then a local open-source AI explains *why* in plain language, in your language of choice.\n\nAir pollution and heat are invisible threats that people routinely ignore because the data is buried in dense charts. SafeAir Walk turns hourly AQI + apparent temperature forecasts into one clear, colour-coded verdict:\n\nIt is built for **four health profiles**: General, Child 👶, Elder 👴, and Asthma / Respiratory 💨 — each with tighter safety thresholds where it matters. The app uses your GPS or lets you search any city, then streams a warm, practical 2-sentence AI explanation — not a wall of warnings, just what to do and why.\n\nThe whole idea is to get people *off the screen* and safely *into the world*. When conditions are good, SafeAir Walk simply says \"Go for it\" and gives you a time. When they're bad, it suggests an indoor alternative and shows when tomorrow looks better.\n\nNo sign-ups. No API keys. No ads. Just open data and a fast, private Ollama LLM.\n\n🌐 **Live app:** [https://safeair-walk.onrender.com/](https://safeair-walk.onrender.com/)\n\nSearch your city (or tap \"Use my location\") and you'll see:\n\nFind your clean-air window to go outside. Checks AQI and heat for your area and picks the best 30–60 min window today.\n\n**Stack:** React + Vite + Open-Meteo (no API key) + Ollama (local AI, optional)\n\n```\npnpm install\npnpm dev\n# Windows PowerShell\n$env:OLLAMA_ORIGINS=\"*\"; ollama serve\n```\n\nThe app auto-detects Ollama and uses it. Falls back to templates if offline.\n\nTwo services:\n\n`safeair-ollama`\n`hf-space/` folder:\n`Dockerfile`` hf_start.sh``README.md`\n\n```\nhttps://YOUR-HF-USERNAME-safeair-ollama.hf.space\n```\n\n`curl https://YOUR-HF-USERNAME-safeair-ollama.hf.space/api/tags`\nThe AI layer runs entirely on **Ollama with open-weight models** — no external proprietary APIs, no OpenAI, no Anthropic.\n\n`qwen2.5:1.5b`` qwen2.5:7b` — ultra-fast open-weight models capable of running seamlessly on consumer hardware.`ollama serve`, exposing a streaming `/api/generate` and `/api/tags` endpoint with CORS enabled (`OLLAMA_ORIGINS=*`).` ReadableStream` and `TextDecoder` to render tokens with a real-time typing effect.\nTo guarantee safety and scientific consistency, SafeAir Walk does **not** rely on LLM guesswork for health boundaries. All safety decisions are evaluated deterministically in `src/safeair-core.js` → `PROFILES` before any prompt is generated:\n\n| Profile | GO | SHORT | SKIP | \n|---|---|---|---|\n| **General** | AQI ≤ 100, Feels like ≤ 32°C | AQI ≤ 150, Feels like ≤ 36°C | Above thresholds | \n| **Child** | AQI ≤ 75, Feels like ≤ 30°C | AQI ≤ 100, Feels like ≤ 34°C | Above thresholds | \n| **Elder** | AQI ≤ 75, Feels like ≤ 30°C | AQI ≤ 100, Feels like ≤ 34°C | Above thresholds | \n| **Asthma** | AQI ≤ 50, Feels like ≤ 32°C | AQI ≤ 100, Feels like ≤ 36°C | Above thresholds | \n\n`pnpm install && pnpm build`).\n| Layer | Technology | Cost | \n|---|---|---|\n| AI Engine | Ollama ( `qwen2.5` ) | Free & Open Source | \n| Web App Hosting | Render Static Site | Free | \n| Weather & AQI | Open-Meteo API | Free, no key required | \n| Geocoding | Open-Meteo Geocoding API | Free, no key required | \n\nWith a closed API, I would have had to pay per token, accept rate limits, and transmit every user's health profile and location data to an external provider's servers.\n\nOpen innovation with Ollama made three critical things possible:\n\n`temperature`, `num_predict`), token streaming, and response structure. There are no unexpected model deprecations, forced safety overrides, or arbitrary rate limit throttling.\nOpen innovation turned what would normally be an expensive, privacy-invasive cloud service into a fast, private, community-owned tool that gets people safely outdoors.\n\n`qwen2.5`) with streaming API served entirely via Ollama", "url": "https://wpnews.pro/news/safeair-walk-find-your-clean-air-window-to-step-outside-today", "canonical_source": "https://dev.to/abhinavnayak21/safeair-walk-find-your-clean-air-window-to-step-outside-today-4o94", "published_at": "2026-10-10 17:38:17+00:00", "updated_at": "2026-10-10 17:46:30.798992+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-products"], "entities": ["SafeAir Walk", "Ollama", "Open-Meteo", "React", "Vite", "qwen2.5", "Render", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/safeair-walk-find-your-clean-air-window-to-step-outside-today", "markdown": "https://wpnews.pro/news/safeair-walk-find-your-clean-air-window-to-step-outside-today.md", "text": "https://wpnews.pro/news/safeair-walk-find-your-clean-air-window-to-step-outside-today.txt", "jsonld": "https://wpnews.pro/news/safeair-walk-find-your-clean-air-window-to-step-outside-today.jsonld"}}