RapidAid was inspired by seeing how people struggle to get help during disasters like hurricanes and floods. Victims often post urgent needs for medicine, food, or shelter on social media, while volunteers and local aid groups juggle group chats and spreadsheets to coordinate responses. First responders get overwhelmed, and organizations lose valuable time trying to organize information instead of acting on it. Witnessing that gap motivated us to create a tool that could streamline those efforts without depending on heavy infrastructure.
We built RapidAid as a fully client-side web application using React with Vite for fast development. Instead of relying on servers or cloud databases, we used IndexedDB so all data stays stored locally in the browser and works offline. The Google Gemini API automatically categorizes requests based on their content for example, a message about running out of asthma medication gets tagged as a medical need immediately. Routing is handled with react-router-dom, and everything is organized into modular components like RequestForm, RequestCard, RequestList, and the dashboard page. When someone submits a request, Gemini classifies it, assigns an ID and timestamp, marks it unclaimed, and stores it locally. Volunteers can open the dashboard, filter requests, claim tasks, or mark them complete.
Throughout the project, we learned a lot. Working with IndexedDB taught us how to manage structured data without a backend. Integrating AI directly into the frontend required careful prompt design and secure handling of API communication. We also had to navigate React compatibility issues with some libraries. Designing an offline-first experience pushed us to think differently about state management, caching, and persistence. On top of that, we focused on building an interface that would make sense in stressful, emergency scenarios.
We also faced several challenges. Some libraries weren’t compatible with React, so we simplified certain features to avoid dependency conflicts. Because AI models typically run server side, we created a minimal proxy approach that protects API keys without exposing them in the frontend. IndexedDB, while powerful, wasn’t intuitive, so we wrote utility functions to make it work more smoothly with React state. Another major hurdle was designing a user interface that allows volunteers to move quickly, especially on mobile. Actions like claiming and completing requests had to update both the UI and offline database instantly without race conditions.
In the end, RapidAid became a functional prototype that lets users submit aid needs quickly, automatically categorizes them with AI, and gives volunteers a dashboard to organize and respond efficiently. It speeds up disaster response without having to waste time on complicated setup. Moving forward, we plan to add geolocation support, volunteer matching, data sync, and analytics to expand its real world impact.
Built With
- ai
- gemini
- indexeddb
- javascript
- react
- vite

Log in or sign up for Devpost to join the conversation.