Inspiration
During large-scale emergencies, police, fire, EMS, and dispatch all update the same incident at the same time. The cost of inconsistency is real: double-assigned ambulances, conflicting status reports, and agencies acting on stale data.
We built Incident Command Board to show why Amazon Aurora DSQL matters for multi-agency response not as a demo database but as the system of record that keeps every agency aligned under concurrent load.
What it does
Incident Command Board is a real-time Emergency Operations Center (EOC) platform with the following:
- Global Command Center: live incident overview, agency status, county map, and Aurora DSQL Consistency Monitor
- Incident Workspace: multi-agency live collaboration, resource assignment, timeline, and AI Incident Commander recommendations
- Resource Operations Center: fleet availability and assignment state across agencies
- County Operations Map: incidents, responders, evacuation zones, and road closures
- After Action Replay: timeline scrubber to reconstruct historical operational state
Core demo: Two dispatchers try to assign the same ambulance simultaneously. Aurora DSQL runs both transactions only one commits. The other is rejected with a clear conflict message, logged in the system, and reflected in the Consistency Monitor (Conflicts Prevented, Rejected Transactions).
How we built it
Frontend: Next.js App Router, TypeScript, Tailwind CSS, and shadcn/ui—scaffolded with Vercel v0, deployed on Vercel. Real-time UI updates via Server-Sent Events and React Query.
Backend: Amazon Aurora DSQL as the primary database, accessed through Drizzle ORM and Next.js Server Actions. Short-lived DSQL IAM auth tokens are generated at runtime via @aws-sdk/dsql-signer.
Concurrency model: Optimistic locking on `columns forresources,incidents, andincident_updates`. Resource assignment uses transactional reads and conditional updates—if the version changed between read and write, the transaction fails with "Concurrent modification detected" or "Resource already assigned."
Schema highlights: users, agencies, incidents, resources, resource_assignments, conflict_logs, timeline_events, audit_logs, consistency_metrics, presence, simulations, evacuation_zones, road_closures.
Demo tooling: Because two humans cannot click at the exact same millisecond, we added a simulate flow to fire parallel assign requests against the same resource so judges can reliably see Aurora DSQL reject duplicate assignments live.
Challenges we ran into
- Aurora DSQL constraints — no foreign keys or secondary indexes, so we enforced referential integrity and query patterns in the application layer.
- Auth tokens — DSQL passwords expire every 15 minutes; we built automatic token refresh at runtime instead of static
DATABASE_URLin production. - Demonstrating race conditions — manual two-tab testing was unreliable, so we added deterministic parallel-request simulation for live demos.
- Multi-role permissions — police, fire, EMS, dispatch, and emergency management each have different capabilities while sharing the same incident record.
Accomplishments that we're proud of
- End-to-end conflict-free resource assignment with visible rejection UX and audit trail
- Consistency Monitor that tracks transactions processed, conflicts prevented, duplicate assignments blocked, and rejected transactions in real time
- Multi-agency collaboration with presence, live feed, and role-based access across five demo personas
- Hurricane simulation that stress-tests the system with 1000+ updates while metrics update live
- A deployable architecture on Vercel + Aurora DSQL that could serve a real county EOC
What we learned
Aurora DSQL's strong consistency is most valuable when multiple actors write to the same records concurrently exactly the emergency response pattern. Optimistic locking with version columns is a practical pattern when you need to prevent double assignment without heavy locking overhead. Building on Vercel v0 + Next.js let us ship a polished UI quickly while keeping the data layer deliberate and production-minded.
What's next for Incident Command Board
- Integrate real CAD/911 feeds and GIS providers
- Add push notifications and SMS alerts for field units
- Expand replay with full state reconstruction at any timestamp
- Connect AI Incident Commander to live LLM inference for dynamic recommendations
- Multi-region Aurora DSQL deployment for statewide disaster coordination
Built With
- amazon
- css
- dsql
- next.js
- orm
- tailwind
- typescript
- v0

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