API monitoring and incident management platform (SaaS). This repository contains the backend: an ASP.NET Core 10 Web API plus the background monitoring worker.
| Concern | Choice |
|---|---|
| API | ASP.NET Core 10 (Minimal APIs) |
| Persistence | PostgreSQL via EF Core 10 |
| Auth | JWT access tokens + rotating refresh tokens |
| Monitoring | BackgroundService hosted in the API process |
| Tests | xUnit + WebApplicationFactory functional tests over SQLite |
src/PulseWatch.Domain entities, enums, domain rules (no dependencies)
src/PulseWatch.Infrastructure EF Core DbContext, configurations, migrations
src/PulseWatch.Api HTTP endpoints, auth, background worker, composition root
tests/PulseWatch.FunctionalTests black-box tests driving the real HTTP pipeline
dotnet run --project src/PulseWatch.ApiConfigure ConnectionStrings:PulseWatch and Jwt:Key (min. 32 chars) via user secrets or
environment variables. Migrations are applied automatically on startup in Development.
dotnet testFunctional tests run against an in-memory SQLite database and need no external services.
| Method | Route | Purpose |
|---|---|---|
| POST | /api/auth/register |
Create an organization and its owner |
| POST | /api/auth/login |
Exchange credentials for tokens |
| POST | /api/auth/refresh |
Rotate a refresh token |
| POST | /api/auth/logout |
Revoke a refresh token |
| GET/PUT | /api/auth/me |
Read or update the current profile |
| POST | /api/auth/change-password |
Change the password and end all sessions |
| GET/POST | /api/endpoints |
List (filter, search) or create endpoints |
| GET/PUT/DELETE | /api/endpoints/{id} |
Read, update or delete one endpoint |
| POST | /api/endpoints/{id}/activate /deactivate /duplicate |
Endpoint operations |
| GET | /api/healthchecks |
Paged check history across all endpoints |
| GET | /api/healthchecks/{endpointId} |
Paged history for one endpoint |
| GET | /api/incidents |
Paged incidents (endpoint, status, severity, date, search) |
| GET | /api/incidents/{id} |
One incident |
| GET | /api/incidents/export |
The filtered incidents as CSV |
| GET | /api/dashboard/overview |
Summary cards |
| GET | /api/dashboard/metrics |
Uptime, response-time, incident trends and status split |
Roles are Owner, Admin, Member and Viewer; viewers are read-only.
Implements the V1.0 (Portfolio MVP) roadmap slice: authentication, organizations, endpoint management, health checks, incident tracking, and dashboard metrics. Design questions the specification left open are answered in docs/architecture-decisions.md.
Not built yet, and deliberately so — these are later roadmap versions or need a decision first: email and chat notifications, password reset (which needs a mail provider), public status pages, SSL certificate monitoring, member invitations, SignalR real-time updates, Redis caching and rate limiting, and the Docker/CI setup.