https://github.com/kostiantyn-matsebora/deployment-dashboard
Real-time services × environments deployment matrix, sourced from CI/CD pipeline events. .NET 10 + Angular 20, live via SSE.
https://github.com/kostiantyn-matsebora/deployment-dashboard
angular ci-cd deployment-dashboard deployment-tracking devops docker dotnet postgresql self-hosted server-sent-events
Last synced: 12 days ago
JSON representation
Real-time services × environments deployment matrix, sourced from CI/CD pipeline events. .NET 10 + Angular 20, live via SSE.
- Host: GitHub
- URL: https://github.com/kostiantyn-matsebora/deployment-dashboard
- Owner: kostiantyn-matsebora
- License: mit
- Created: 2026-05-15T18:26:36.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-02T00:07:11.000Z (13 days ago)
- Last Synced: 2026-06-02T00:17:09.184Z (13 days ago)
- Topics: angular, ci-cd, deployment-dashboard, deployment-tracking, devops, docker, dotnet, postgresql, self-hosted, server-sent-events
- Language: C#
- Homepage: https://kostiantyn-matsebora.github.io/deployment-dashboard/
- Size: 7.04 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
Deployment Dashboard
A real-time services × environments deployment matrix, sourced straight from your CI/CD pipeline events.
Quickstart ·
Integrate your CI/CD ·
Docs
---

> **The question it answers:** *What version of service X is running in environment Y right now — and did the last deployment succeed?*
## Why Deployment Dashboard?
- **Single-step integration.** One `POST /api/deployments` call — no plugins, no agent, no pipeline rewrite.
- **Tool-agnostic.** GitHub Actions, Azure DevOps, GitLab CI, Jenkins, shell scripts — anything that can call a URL.
- **One screen, instant answer.** Every service across every environment; no clicking through pipelines and logs.
- **Live via SSE.** State changes push to every open browser within seconds — no refresh, no stale tab.
- **Full append-only history.** Every deployment kept per slot (≥ 90 days, configurable); nothing overwritten.
- **Auto-discovers topology.** Services and environments are derived from events you send — no registration, no config file.
- **Secure by design.** Writes are API-key gated; reads are internal-only; the SPA holds no secrets.
- **Pull mode when you can't push.** The optional Fetcher polls your CI/CD API and posts through the same contract.
## Try it in 2 minutes
Zero config — no API keys, no database setup, no clone required.
```bash
docker compose --project-directory . -f oci://ghcr.io/kostiantyn-matsebora/deployment-dashboard-compose-demo:latest --profile demo up
```
Then open:
| URL | What you get |
|---|---|
| | Live deployment matrix |
| | Demo Driver control panel |
Prefer explicit local files? See the [Quickstart](docs/guide/quickstart.md) for the `curl` alternative.
## Send your first deployment
One HTTP call from your pipeline — that's the whole integration:
```bash
curl -X POST "$DASHBOARD_URL/api/deployments" \
-H "X-Api-Key: $DASHBOARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deployment_id": "build-42",
"service": "checkout",
"environment": "prod",
"version": "1.4.2",
"status": "success",
"happened_at": "2026-06-01T10:00:00Z"
}'
```
[GitHub Actions, Azure DevOps, GitLab & Jenkins examples →](docs/guide/send-events.md)
## Two views
- **Matrix** — one row per service, one column per environment; each tile shows version, status, actor, elapsed time, and a CI/CD run link.
- **Swimlanes** — per-service deployment graphs showing how a version flows from `dev` through to `prod`, with branching topology and status-colored edges.

## Deploy for your team
Fetch the compose file and env template, fill in your secrets, then start — no clone required:
```bash
curl -fsSLO https://raw.githubusercontent.com/kostiantyn-matsebora/deployment-dashboard/main/compose/docker-compose.yaml
curl -fsSLO https://raw.githubusercontent.com/kostiantyn-matsebora/deployment-dashboard/main/compose/.env.example
cp .env.example .env
# edit .env — set API_KEY, POSTGRES_USER, POSTGRES_PASSWORD (+ POSTGRES_HOST for standalone)
docker compose --profile full up -d
```
**Shapes:** `standalone` (external PostgreSQL) or `full` (bundled PostgreSQL); add `-pull` to either for the optional Fetcher. `demo` is for evaluation only. The gateway (`:8080`) is the only published port. Pin a version via `DASHBOARD_VERSION=0.2.1` in `.env` (no leading `v`).
[Install & deploy →](docs/guide/install.md)
## How it works
```mermaid
flowchart LR
CI[CI/CD tool] -->|POST /api/deployments| GW["Gateway
nginx :8080"]
GW --> FE["Frontend
Angular + nginx"]
GW --> API["API
.NET 10"]
GW -.->|optional| F["Fetcher*"]
API <-->|LISTEN/NOTIFY| DB[("PostgreSQL")]
F -->|POST /api/deployments| API
```
`*` Dashboard.Fetcher is the optional pull-mode adapter — polls a CI/CD API and posts events through the same push endpoint.
[Architecture overview →](docs/guide/architecture-overview.md)
## Documentation
**Site:**
- [Quickstart](docs/guide/quickstart.md) — run the demo locally in 2 minutes.
- [Install & deploy](docs/guide/install.md) — Compose profiles, production checklist.
- [Configuration](docs/guide/configuration.md) — every environment variable.
- [Integrate your CI/CD](docs/guide/send-events.md) — pipeline examples.
- [Architecture overview](docs/guide/architecture-overview.md) — how the pieces fit.
- [FAQ & troubleshooting](docs/guide/faq.md)
## Contributing · License · Security
- **Contributing:** local setup, branch → PR workflow, and project layout are in [CONTRIBUTING.md](CONTRIBUTING.md).
- **License:** MIT — see [LICENSE](LICENSE).
- **Security:** follow the [Security policy](SECURITY.md) for vulnerability reports.