The Official Repository of the AIEMA Mobile App.
Built with Expo
Emergencies happen anytime, anywhere. But in many parts of the world, the lack of immediate medical assistance leads to preventable deaths. What if anyone, anywhere, could access real-time, voice-guided first aid support? That question sparked AIEMA. Inspired by the urgent need for accessible, tech-driven emergency response, we set out to create an AI-powered solution that empowers individuals and communities to act fast in medical crises.
Medical AI Needs Extreme Accuracy: There’s no room for error in life-or-death situations, so we had to ensure that AIEMA delivers reliable, medically sound responses. Voice Processing is Challenging: Training an AI to understand different accents, tones, and urgency levels in speech is complex, requiring constant improvement. User Experience Matters: First aid is often needed in high-stress situations. We had to design AIEMA to be fast, intuitive, and accessible, even for non-tech-savvy users.
Ensuring AI Accuracy: Integrating trusted medical data sources and refining AI decision-making was tough but necessary. Latency in Voice Processing: We worked to optimize AIEMA's response time to ensure real-time assistance. Balancing Simplicity & Functionality: Making AIEMA simple yet powerful required multiple design iterations and feedback loops.
AIEMA is just getting started. We aim to:
- ✅ Expand language support for multilingual accessibility
- ✅ Improve AI context awareness for better emergency handling
- ✅ Deploy AIEMA in schools, workplaces, and public spaces to ensure life-saving tech is always within reach
With AIEMA, we’re not just building an app—we’re redefining emergency response for a safer, more prepared world.
Inside repository, you'll see the following folders and files:
├───.vscode
├───app
├───patches
└───src
├───assets
│ ├───fonts
│ ├───icons
│ └───images
├───components
│ ├───base
│ └───inc
├───constants
├───data
├───hooks
├───i18n
├───layouts
├───schemas
├───store
├───types
├───utils
└───screens
-
appThis is where you can find all the routes present in the app. This project uses Expo Router, it's a file based router that allows seamless navigation between screens. It offers some special features like Optimizations(lazy loading etc), Easy and custom Layout management,type-saf routes and more. -
patchesThis is where you can find all the patches that are applied to the project. This project uses patch-package -
src/assetsThis is where you can find all the static assets like images, icons and fonts. This project makes use of react-native-svg-transformer, which allows importing of SVGs as React components with Optimzation steps by SVGO. This project also uses Expo fonts, which allows you to load fonts from the web and local files and Expo Image for image optimization. -
src/componentsdirectory for all our components. It is has 1 subfolder,ui.uicontains all the base components that are used across multiple screens(e.g Input, Buttons, Text). This project uses Unistyles and it's primitives for styling and creating components. -
src/constantsdirectory for all our constants. -
src/datadirectory for all our data(e.g slides, products, etc). -
src/hooksdirectory for all our custom hooks. -
src/i18ndirectory for all our internationalization setup. This project uses i18next for internationalization. -
src/layoutsdirectory for all our layout components. Layouts are special components that wrap other components, and are used to create a consistent layout across multiple screens. As we use Expo Router, you can read the documentation here. -
src/schemasdirectory for all our zod schemas. -
src/storedirectory for all our store setup. This project uses Zustand for state management. -
src/typesdirectory for all our types. -
src/utilsdirectory for all our utility functions. -
src/screensdirectory for all our screens. Each screen is exported and consumed in their corresponding routes in theappfolder.
- Expo: A free and open-source platform for making universal native apps for Android, iOS, and the web with JavaScript and React.
- Unistyles: Unistyles is a cross-platform library that enables you to share up to 100% of your styles across all platforms. It combines the simplicity of StyleSheet with the performance of C++.
- Expo Router: A file based router that allows seamless navigation between screens.
- reanimated: React Native's Animated library reimplemented for speed,performance and ease of use.
- FlashList: A fast & performant React Native list. No more blank cells.
- Burnt: Cross-platform toasts for React Native, powered by native elements.
- React Query: A powerful library for managing, caching, and syncing server state in React applications.
- React query kit: A toolkit for ReactQuery that make ReactQuery hooks reusable and typesafe
- React Hook Form: Performant, flexible and extensible forms with easy-to-use validation.
- zod: A TypeScript-first schema declaration and validation library.
- i18next: Internationalization framework for browser or any other javascript environment.
- Zustand: A small, fast and scaleable bearbones state-management solution.
- MMKV: A blazingly fast™️⚡(~30x faster than AsyncStorage), small, and secure key-value storage library for React Native.
- react-native-svg-transformer: Allows importing SVG files in your React Native project the same way that you would in a Web project - using the svg component.
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run start |
Starts the expo development server |
npm run android |
Starts the app on the android platform |
npm run ios |
Starts the app in the ios platform |
npm run web |
Starts the app in the web platform |
npm run build:<profile> |
Creats a build on EAS based on the the profile. Supported profiles dev, preview, and production |
i18n:extract |
Extracts all the translation keys from the project to types |
We welcome contributions from anyone who is interested in this project. Here are some guidelines on how to contribute:
- Fork this repository and clone it to your local machine.
- Create a new branch from the main branch, following the naming convention
feature/<your-feature-name>orfix/<your-bug-name>. - Make your changes and commit them with a clear and descriptive message, following the Conventional Commits specification.
- Push your branch to your forked repository and create a pull request to the main branch of this repository.
- Wait for the code review and feedback from the maintainers.
Please Note: This application is still in a prototype stage and will remain under development even after the codeExtreme Hackathon. The AIEMA team > is grateful to have had this opportunity to participate, and looks forward to future projects.