Emergent is a web-based, AI-powered Tabletop Exercise (TTX) platform that allows emergency managers to simulate disaster scenarios and their impact on a community. It provides a safe, controlled, and highly detailed environment to practice, test, and refine emergency plans, with a focus on improving communication with vulnerable populations.
In a crisis, effective communication can save lives. However, testing communication strategies, especially for reaching diverse and vulnerable communities, is incredibly challenging. Traditional tabletop exercises are often static and resource-intensive. Emergent aims to solve this by providing a dynamic, AI-driven simulation environment that models complex human behaviors and communication patterns.
- AI-Powered Scenario Generation: Use Google's Gemini model to dynamically generate realistic disaster scenarios and narrative injects.
- Interactive Simulation: Run exercises on an interactive GIS map, with events unfolding over a structured timeline.
- Persona-Based Modeling: Simulate a diverse community with unique "personas" that react differently to events based on their demographics and roles using Google Gemini's ADK and Parallel Agents
- AI Chat Interaction: Engage with an Gemini AI-powered chatbot to get situational updates and test communication strategies by seeing how personas react.
- Comprehensive After-Action Reporting: Generate detailed reports after each simulation, including an executive summary, deep-dive analytics, and an interactive timeline replay.
- Modern, Intuitive Interface: A clean and responsive UI built with Next.js, Tailwind CSS, and shadcn/ui.
- Framework: Next.js 14+
- Language: TypeScript
- AI: Google Gemini via
@google/generative-ai - Styling: Tailwind CSS with shadcn/ui
- Mapping: React Leaflet
- 3D Visualization: React Three Fiber & Drei
Follow these instructions to get a local copy of the project up and running for development and testing.
- Node.js (v20.x or later recommended)
- npm or yarn
-
Clone the repository:
git clone https://github.com/your-username/your-repository-name.git cd your-repository-name -
Install dependencies:
npm install
-
Set up environment variables:
This project requires an API key for the Google Gemini AI service.
Create a file named
.env.localin the root of the project and add your API key:GOOGLE_API_KEY="YOUR_API_KEY_HERE" -
Run the development server:
npm run dev
Open http://localhost:3000 with your browser to see the result.
-
Build for production:
npm run build
-
Run production server:
npm run start
-
Run linter:
npm run lint
The codebase is organized to keep a clean separation of concerns.
app/: Contains the core application logic, pages, and API routes, following the Next.js App Router structure.app/api/: Backend API endpoints for AI generation, chat, etc.app/components/: The majority of the React components that make up the UI.app/(pages)/: Different top-level pages like/editor,/simulation-v2, etc.
components/ui/: Core UI components from shadcn/ui.lib/: Contains utility functions, type definitions, and state management stores.lib/stores/: State management logic (e.g., Zustand stores).lib/types/: TypeScript type definitions for data structures like scenarios and personas.
public/: Static assets like images and icons.
Contributions are welcome! If you have a suggestion or find a bug, please open an issue to discuss it.
This project is licensed under the MIT License. See the LICENSE file for details.
