Real-time service monitoring. Built with modern C++.
Softadastra PulseGrid is a lightweight monitoring application designed to demonstrate how to build a real-world, production-style system using Vix.cpp.
It focuses on clarity, reliability, and architecture, not complexity.
Softadastra PulseGrid lets you:
- Monitor HTTP endpoints
- Track uptime and response time
- Detect incidents automatically
- Expose a real-time status dashboard
- Stream updates via WebSocket
It is intentionally simple, but architecturally serious.
Softadastra PulseGrid is not just another app.
It is a reference implementation showing:
- How to build a clean C++ backend
- How to structure a real application (
domain -> application -> infrastructure -> presentation) - How to use Vix.cpp in production conditions
- How to remove friction from CMake and setup
No boilerplate. No hidden magic. Just clear systems.
Softadastra PulseGrid follows a strict layered architecture:
Domain -> Business rules (pure C++)
Application -> Use cases / services
Infrastructure -> DB, HTTP checks, runtime
Presentation -> HTTP API + WebSocket
App -> Bootstrap + wiring
Key principles:
- Dependency inversion (ports & adapters)
- Explicit boundaries
- Testable components
- Minimal coupling
- C++20
- Vix.cpp runtime
- SQLite (default)
- HTTP checks + scheduler
- WebSocket for real-time updates
- Zero external frameworks
src/pulsegrid/
├── app/ -> bootstrap & wiring
├── domain/ -> core logic
├── application/ -> services & ports
├── infrastructure/ -> DB, events, checker
└── presentation/ -> HTTP + WS layer
vix buildvix runhttp://localhost:8080
Softadastra PulseGrid exposes a full interactive API documentation, powered by Vix.
Open:
http://localhost:8080/docs
This gives you:
- Full HTTP API documentation
- WebSocket endpoints documentation
- Interactive request testing
- No external dependencies (offline Swagger UI)
The OpenAPI specification is also available at:
http://localhost:8080/openapi.json
Everything is generated automatically from the application routes.
Open:
http://localhost:8080
Use the "Create monitor" form.
Add a test endpoint:
- Name: Example
- Slug: example
- URL: https://example.com
- Interval: 15
Click Create monitor.
You will see:
- The monitor appear instantly
- Status updates every few seconds
- Real-time changes via WebSocket
Create a monitor:
curl -X POST http://localhost:8080/api/monitors \
-H "Content-Type: application/json" \
-d '{
"name": "Example",
"slug": "example",
"url": "https://example.com",
"interval_seconds": 15
}'Get all monitors:
curl http://localhost:8080/api/monitorsGet global status:
curl http://localhost:8080/api/status/summaryConnect:
ws://localhost:9090/
Send:
{
"type": "status.subscribe",
"payload": {}
}You will receive events such as:
monitor.createdmonitor.updatedcheck.recordedincident.openedincident.resolved
vix tests- Default: SQLite
- Automatically initialized
- Migrations applied on startup
No manual setup required.
Softadastra PulseGrid uses WebSocket for live updates:
- monitor status changes
- incidents
- health checks
The UI updates automatically without refresh.
Softadastra PulseGrid proves that you can:
- Build backend systems in C++ without friction
- Use modern architecture patterns cleanly
- Replace heavy stacks with a minimal runtime
- Ship something real, not just demos
Build real systems. Keep them simple. Make them predictable.
Gaspard Kirira
https://github.com/GaspardKirira
MIT