Welcome To GrayWorks Technologies

Emergency Safety
Planning

Category

Emergency Management Software

Year

2026

Role

Design, Development & Hosting
Emergency Safety Planning

Project Description

Emergency Safety Planning is a multi-tenant platform that produces FEMA and NIMS-aligned Emergency Operations Plans for any organization responsible for people in a building — schools and campuses, workplaces, nonprofits, clinics, municipal facilities, and houses of worship. Seven sectors share one plan structure drawn from FEMA CPG-101; only the vocabulary changes. The product was shaped with working emergency-management practitioners, one of whom rebuilt a real municipal plan inside it in about six hours, against the three to five days the same plan took his team on paper.

GrayWorks designed and built the whole product: a dark, calm marketing site and an authenticated dashboard behind it. A guided AI interview drafts the plan across the Basic Plan, Annexes A through N, and continuity; twenty-one hazards become animated, role-by-role response workflows; an ICS roster seats twelve command positions and shows who is actually reachable. The same plan data renders an Emergency Flip Chart, on screen for every role and as a printable color-coded sheet that keeps one emergency to one page, and a readiness score on the dashboard names the next thing worth doing.

The stack is Next.js 16 and React 19 in TypeScript strict mode, Tailwind v4, and Prisma 7 against PostgreSQL 16, with Auth.js credentials and Google sign-in, Stripe subscription billing, and a notification layer that fans an incident out over Retell voice, Twilio SMS, and SendGrid email at once. Authorization is enforced in every layout, page, and route handler rather than in middleware, and every query is scoped by the organization on the session. More than 570 automated tests run against the domain catalog, the billing catalog, and the call-script rules, and the app ships as a non-root container behind a TLS reverse proxy with its database on a private network.

Key Deliverables

A FEMA-aligned platform that writes an organization's emergency plan, drills it, and activates the response team from one place.

Client

Emergency Safety Planning

Location

United States

Scope of Work

Everything GrayWorks delivered for Emergency Safety Planning:

  • Product Design & Brand System
  • AI Plan Interview & Document Generation
  • Response Workflows & Emergency Flip Chart
  • Incident Activation & Command Roster
  • Subscription Billing & Multi-Site Tenancy
  • Security, Hosting & Deployment
Open Project

A guided interview walks an organization through the Basic Plan, Annexes A through N, and continuity, asking only what its sector needs and writing each answer into the plan as it goes. The structure, hazard list, ICS positions, and exercise cadence come from FEMA CPG-101 and a FEMA-aligned template rather than from the model, and the interviewer is held to never inventing an answer and never stating a legal requirement. An organization that already has a plan can import it instead of retyping it, and the print view is the export, so the document a reviewer reads is the one the site renders.

Each of the twenty-one hazards carries a response playbook drawn as an animated graph, with every step assigned to the ICS seat that runs it and cited back to the plan section it came from. Those cross-references are plain strings that a compiler cannot check, so a test walks every workflow and fails the build if a step names a seat, a section, or a notification target that does not exist. The same plan data renders the Emergency Flip Chart in two forms, on screen and printable, from one object rather than two copies. Nothing about the chart is stored or cached, so it cannot go stale, and a missing answer prints "Not yet recorded" rather than a plausible default.

Activation is a press-and-hold button that declares an incident and reaches the command roster by voice, SMS, and email at once, then records who answered. Calls are placed through Retell with per-call context; SMS and email go over Twilio and SendGrid, and a missing provider degrades to the channels that remain rather than failing the activation. A drill is enforced in code and not left to a prompt, so every call and message on a drill opens and closes by saying so. Each incident keeps an ICS-214 timeline, call transcripts, and an after-action record, and a shared phone line answers inbound calls and can file a support ticket against the caller's account.

There is deliberately no middleware auth gate: authorization is checked in every layout, page, and route handler, and every query is scoped by the organization on the session rather than by an identifier taken from the request. Stripe carries subscription billing, including per-building quantities for multi-site customers and a per-occupancy add-on, with the price catalog asserted against Stripe in tests so the page and the card can never disagree. A multi-site customer runs each building as its own tenant with a district-level rollup above it. The app runs as a non-root container on a Docker host behind a TLS reverse proxy, with PostgreSQL on a private network, security headers and rate limiting applied at the edge, and a health endpoint for the orchestrator.

Start a Similar Project

Your email address will not be published. Required fields are marked *