Skip to content

Repository files navigation

PSD EOC

PSD EOC is an open-source emergency notification and operations platform for school districts. Staff can activate incidents or drills, notify staff over configured channels, collaborate in a live event timeline, and retain an append-only record.

Call 911 first. PSD EOC notifies and documents; it does not contact emergency services.

Start a synthetic web app in 15 minutes

This path uses only reserved example identities, unroutable recipients, and a repository-owned PostgreSQL container. It cannot contact a notification provider.

Install these prerequisites:

  • Bun 1.2.23
  • Docker with Compose
  • Poppler's pdftotext (brew install poppler on macOS or apt-get install poppler-utils on Debian/Ubuntu)

From a clean checkout, run:

bun install --frozen-lockfile
bun run test:db:start
bun run test:db:migrate
bun run test:db:seed
bun run test:web

test:db:start writes ignored root and server .env.local files containing the assigned loopback database port and the reserved values from .env.example. The migrate, seed, and web commands validate those files and pin their child processes to that synthetic database, even if your shell has other database variables. Startup refuses conflicting ambient database configuration or a file it did not generate. Open http://127.0.0.1:3000/login and confirm the page names the synthetic example district.

In a second terminal, run the authoritative repository gate:

bun run check

That command checks formatting, documentation contracts, lint with zero warnings, every TypeScript workspace, example configuration, the production server build, all Bun tests, and mobile-native tests. It is the only complete local verification command.

When finished, stop the repository-owned database and remove its synthetic volume and generated environment file:

bun run test:db:stop

Current documentation

Deploy for your district

PSD EOC is built to be run by any school district on its own AWS account and Google Workspace. Start with the first administrator guide, then follow the first-run runbook. The configuration index lists every value a district supplies: identity, facilities, notification providers, and the mobile app identifiers for its own store listings.

Repository layout

packages/contracts   Zod domain and capability contracts
packages/server      Next.js web, REST, capability engine, and database
packages/mobile      Expo native iOS and Android client
packages/mcp         MCP adapter over the agent REST capability surface
workers              Notification routing and channel workers
infra                AWS CDK and Google Cloud configuration
scripts              Repository verification and operator tooling
docs                 Current guides, runbooks, readiness, and history
patches              Dependency patches applied by bun install
.verification        Retained synthetic-only test evidence for closed issues

Read AGENTS.md before making a change. In particular, automation must never start a real incident, send a real notification, issue a real all-clear, or close a real event.

Contributing

Contributions are welcome. CONTRIBUTING.md covers the workflow, the repository gate, and what reviewers look for; the Code of Conduct applies to every project space.

Security

Report vulnerabilities privately as described in the security policy. Do not open public issues for them.

License

PSD EOC is released under the MIT License. Third-party components and their licenses are listed in NOTICE.

About

Open-source emergency notification and operations platform for school districts: incident and drill activation, staff notification, live event collaboration, and append-only records.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages