A mini device monitoring system — Agent + API + Live Admin Panel
DevicePulse consists of a lightweight Agent application installed on permitted computers and an admin panel that displays live data from these Agents.
- Backend: ASP.NET Core Web API (.NET 8)
- Real-Time: SignalR
- Database: MSSQL + Entity Framework Core
- Frontend: Blazor Server
- Architecture: Clean Architecture
- Auth: JWT Token
DevicePulse/ ├── DevicePulse.Domain/ → Entities, Enums ├── DevicePulse.Application/ → Interfaces, DTOs ├── DevicePulse.Infrastructure/ → EF Core, MSSQL, Repositories ├── DevicePulse.Api/ → Web API, SignalR Hub, JWT ├── DevicePulse.Agent/ → Monitoring Agent (Worker Service) ├── DevicePulse.Admin/ → Blazor Admin Panel └── DevicePulse.Shared/ → Shared DTOs
- .NET 8 SDK
- SQL Server (MSSQL)
- Visual Studio 2022
Update the connection string in DevicePulse.Api/appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER;Database=DevicePulseDb;Trusted_Connection=True;TrustServerCertificate=True"
}Apply migrations via Package Manager Console: Update-Database -Project DevicePulse.Infrastructure -StartupProject DevicePulse.Api
While the API is running, use Swagger at /api/auth/register:
{
"username": "admin",
"password": "yourpassword"
}Edit DevicePulse.Agent/appsettings.json:
{
"AgentSettings": {
"ServerUrl": "http://API_SERVER_IP:5056",
"DeviceKey": "UNIQUE-DEVICE-ID",
"DeviceName": "Device Name",
"Mode": "Console",
"WatchedProcesses": ["notepad.exe", "chrome.exe"]
}
}Set Multiple Startup Projects in Visual Studio:
- DevicePulse.Api → Start
- DevicePulse.Agent → Start
- DevicePulse.Admin → Start
- Start API, Admin Panel and Agent
- Device appears online in the admin panel
- CPU/RAM/Disk values update in real-time
- Open notepad.exe → panel shows "Started"
- Close notepad.exe → panel shows "Stopped"
- Use Simulator Mode to simulate multiple devices
- Test Ping, RefreshMetrics, SendAgentLogs commands
To simulate multiple devices on a single computer, update appsettings.json:
"Mode": "Simulator",
"DeviceKey": "SIM-PC-01",
"DeviceName": "Simulation-PC-01"| Mode | Description |
|---|---|
| Console | Reads real metrics, displays logs on screen |
| Simulator | Generates fake metrics, used for demo purposes |
- All API endpoints protected with JWT
- Agent authenticated with token
- Admin commands limited to whitelist
- Passwords hashed with SHA256
- No screenshots, keylogger or invasive features