Project Info
This project did not submit a demo video on Devpost.
Inspiration
Our inspiration came from the growing concern over air pollution and its detrimental effects on individuals with respiratory conditions like asthma and allergies. Most available AQI data only updates hourly, making it difficult for people to track real-time changes. We wanted to create a solution that provides real-time, personalized, and actionable alerts, helping individuals proactively manage their health and stay safe.
What it does
The application collects real-time data from multiple sources, including traffic, pollens level and air quality index (AQI) data. It analyzes the air quality in the user's surrounding area, visualizes on the map, and provides real-time updates. Based on the user’s specific health conditions, such as asthma or allergies, the app sends personalized notifications with warnings and recommendations, helping users to take appropriate action to protect their health.
How we built it
We first collect real-time data from multiple third-party APIs, including Google Maps API, to gather information such as traffic, air quality, and pollen levels. Then, we use SingleStore DB for low-latency queries, allowing to query and update data in real-time. We also use Groq API to call the Llama 3 model. With the metadata about the surroundings and user's health condition, the LLM model generate personalized notification messages. We use React for frontend and Node for backend development. Lastly, we deploy it on Vercel.
Challenges we ran into
Data Integration: Collecting real-time data from multiple sources and ensuring consistent, accurate updates was quite a challenge. Familiarizing with SDKs: We spent considerable time getting familiar with the SingleStore SDK and Groq SDK. API Rate Limits: Handling rate limits from third-party APIs posed a challenge, especially for a real-time application that requires frequent updates.
Accomplishments we're proud of
We successfully built a working product with core features, including real-time data updates, personalized LLM-generated messages, and map visualization. We also talked to a bunch of cool people, from hackers to sponsors. Implemented and learned a handful of new technologies.
What we learned
We learned a lot about the architecture behind real-time applications, particularly in handling large volumes of data and optimizing for low latency. In the future, we could explore using a Kafka queue to streamline real-time data even further. We gained insights into how AI models like Llama 3 can be used to generate personalized and meaningful notifications. BIGGEST LESSON: SLEEP IS IMPORTANT !!! What's Next for AirMigo We aim to expand the app’s capabilities to account for a wider range of health conditions, such as COPD, bronchitis, or heart conditions, to make the app more versatile. We plan to integrate additional real-time data sources, such as weather conditions, humidity levels, and wildfire smoke, to provide even more accurate real-time air quality reports. In case of having more resources (more API rates), we want to increase the geographical radius for data collection and allow for more frequent updates and larger coverage areas. Let users go to a destination via a path with least air resistance. Cleaner and more intuitive UI

AirMigo (Cal Hacks 11.0)
Helping respiratory patients with real-time AI-powered air quality monitoring for better health management
Inspiration
Our inspiration came from the growing concern over air pollution and its detrimental effects on individuals with respiratory conditions like asthma and allergies. Most available AQI data only updates hourly, making it difficult for people to track real-time changes. We wanted to create a solution that provides real-time, personalized, and actionable alerts, helping individuals proactively manage their health and stay safe.
What it does
The application collects real-time data from multiple sources, including traffic and air quality index (AQI) data. It analyzes the air quality in the user's surrounding area, visualizes the hotspots on the map, and provides real-time updates. Based on the user’s specific health conditions, such as asthma or allergies, the app sends personalized notifications with warnings and recommendations, helping users to take appropriate action to protect their health.
How we built it
We first collect real-time data from multiple third-party APIs, including Google Maps API, to gather information such as traffic, air quality, and pollen levels. Then, we use SingleStore DB for low-latency queries, allowing to query and update data in real-time. We also use Groq API to call the Llama 3 model. With the metadata about the surroundings and user's health condition, the LLM model generate personalized notification messages. Last but not least, we use React for frontend and Node for backend.
Challenges we ran into
- Data Integration: Collecting real-time data from multiple sources and ensuring consistent, accurate updates was quite a challenge.
- Familiarizing with SDKs: We spent considerable time getting familiar with the SingleStore SDK and Groq SDK.
- API Rate Limits: Handling rate limits from third-party APIs posed a challenge, especially for a real-time application that requires frequent updates.
Accomplishments that we're proud of
- We successfully built a working product with core features, including real-time data updates, personalized LLM-generated messages, and map visualization for air quality hotspots.
- We also managed to achieved a moderately low-latency updates ( around 1s to send new updates to users).
What we learned
- We learned a lot about the architecture behind real-time applications, particularly in handling large volumes of data and optimizing for low latency. In the future, we could explore using a Kafka queue to streamline real-time data even further.
- We gained insights into how AI models like Llama 3 can be used to generate personalized and meaningful notifications.
What's Next for AirMigo
- We aim to expand the app’s capabilities to account for a wider range of health conditions, such as COPD, bronchitis, or heart conditions, to make the app more versatile.
- We plan to integrate additional real-time data sources, such as weather conditions, humidity levels, and wildfire smoke, to provide even more accurate real-time air quality reports.
- In case of having more resources (more API rates), we want to increase the geographical radius for data collection and allow for more frequent updates and larger coverage areas.
Analysis
View
Metric
- 19
- 16
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- HTMLIn code
- JavaScriptIn code
- ReactIn code
- Node.jsClaimed
- VercelClaimed
5 of 7 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
33 KB
Source files
23
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
qtrunguyen/AirMigo
36 files · 1.8 MB · @ e971ab6
Structure
Interface
1 file · 3%Screens, components and styles rendered to the user.
Application logic
19 files · 53%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript66%
- CSS22%
- Markdown11%
- HTML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 16- @react-google-maps/api
- @vis.gl/react-google-maps
- axios
- react
- react-dom
- react-icons
- +10 more
backend/package.json
npm · 8- @singlestore/client
- axios
- bcrypt
- cors
- dotenv
- express
- groq-sdk
- mysql2
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.