Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IncidentManager

A small event-driven incident-management platform, built to demonstrate a microservices architecture: an API gateway, a JWT-based identity service, an incident service with an explicit state machine, and two independent consumers of its domain events — a SignalR notification service and a public status page.

See docs/architecture.md for the full design, including why the incident service never talks to the notification service directly.

Services

Service Port (docker-compose) Port (dotnet run)
Gateway (dashboard + reverse proxy) http://localhost:8080 http://localhost:5080
Identity.Api http://localhost:8081 http://localhost:5081
Incidents.Api http://localhost:8082 http://localhost:5082
StatusPage.Api http://localhost:8083 http://localhost:5083
Notifications.Api (SignalR hub) http://localhost:8084 http://localhost:5084
RabbitMQ management UI http://localhost:15672

RabbitMQ and Postgres credentials in this repo are throwaway dev defaults (incidentmanager / incidentmanager) — do not reuse them anywhere real.

Run with Docker Compose (recommended)

docker compose up --build

Then open http://localhost:8080. Sign in with one of the seeded demo users:

  • admin@incidentmanager.local / ChangeMe123!
  • responder@incidentmanager.local / ChangeMe123!

Create an incident and watch it land in the activity feed and status banner in real time — that push comes over the SignalR connection from Notifications.Api, driven by the IncidentCreated event Incidents.Api published to RabbitMQ.

Run locally without Docker

Requires the .NET 10 SDK, plus a local Postgres and RabbitMQ (the ones from docker compose up postgres rabbitmq work fine — their ports are published to localhost).

dotnet restore
dotnet run --project src/Identity.Api
dotnet run --project src/Incidents.Api
dotnet run --project src/StatusPage.Api
dotnet run --project src/Notifications.Api
dotnet run --project src/Gateway

Each service applies its own EF Core migrations on startup. Open http://localhost:5080.

Project layout

src/
  Gateway/            YARP reverse proxy + static dashboard (wwwroot/)
  Identity.Api/        JWT-based auth, user store
  Incidents.Api/       Incident state machine, publishes domain events
  Notifications.Api/   Consumes events, pushes to browsers via SignalR
  StatusPage.Api/       Public status page, event-driven read model
  Contracts/            Shared event contracts + JWT wiring
docker/
  postgres-init/       Creates the per-service databases on first container start
docs/
  architecture.md      Full design write-up + diagram
docker-compose.yml     Postgres + RabbitMQ + all five services

About

Demo project to illustrate various development areas.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages