Add project scaffolding and documentation

Add .env.example with configuration for database, Redis, security, SMTP, workers, and plugins. Add .gitignore for Python, Node.js, Next.js, Docker volumes, and IDE files. Add MIT License. Update README.md with feature overview, quick start guide, architecture description, plugin system documentation, security details, backup/restore instructions, and developer setup. Add Alembic configuration files and placeholder directories for API, web, worker, and plugin components
This commit is contained in:
nessi committed 2026-06-21 09:31:47 +02:00
1 parent cfeeccbf53
commit d694c8b8e3
197 files changed
+8583 -56

No files matched your search

View File
Whitespace-only changes.
+55
View File
@@ -0,0 +1,55 @@
{
"id": "adguard-home",
"name": "AdGuard Home",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "DNS statistics, blocked queries, top clients and domains.",
"author": "NexaDash",
"category": "Network",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"username": {
"type": "string",
"title": "Username"
},
"password": {
"type": "string",
"title": "Password",
"format": "password"
}
},
"required": ["username", "password"]
},
"widgets": [
{
"id": "dns-overview",
"name": "DNS Overview",
"description": "Queries, blocked and block rate",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "block-rate-chart",
"name": "Block Rate Chart",
"description": "Blocked queries over time",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "top-clients",
"name": "Top Clients",
"description": "Most active clients",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "top-blocked-domains",
"name": "Top Blocked Domains",
"description": "Most blocked domains",
"defaultWidth": 2,
"defaultHeight": 2
}
]
}
View File
Whitespace-only changes.
+44
View File
@@ -0,0 +1,44 @@
{
"id": "authentik",
"name": "authentik",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "Users, applications, outposts and login events.",
"author": "NexaDash",
"category": "Security",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"api_token": {
"type": "string",
"title": "API Token",
"format": "password"
}
},
"required": ["api_token"]
},
"widgets": [
{
"id": "auth-overview",
"name": "Auth Overview",
"description": "Users and applications summary",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "recent-logins",
"name": "Recent Logins",
"description": "Latest login events",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "app-status",
"name": "App Status",
"description": "Application health overview",
"defaultWidth": 2,
"defaultHeight": 2
}
]
}
View File
Whitespace-only changes.
+54
View File
@@ -0,0 +1,54 @@
{
"id": "beszel",
"name": "Beszel",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "System metrics, CPU/RAM/Disk/Network and alerts.",
"author": "NexaDash",
"category": "Monitoring",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"api_token": {
"type": "string",
"title": "API Token",
"format": "password"
}
},
"required": ["api_token"]
},
"widgets": [
{
"id": "system-overview",
"name": "System Overview",
"description": "List of monitored systems",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "resource-chart",
"name": "Resource Chart",
"description": "CPU/RAM/Disk/Network chart",
"defaultWidth": 3,
"defaultHeight": 2,
"settingsSchema": {
"type": "object",
"properties": {
"system_id": {
"type": "string",
"title": "System ID"
}
},
"required": ["system_id"]
}
},
{
"id": "host-cards",
"name": "Host Cards",
"description": "Cards per host",
"defaultWidth": 2,
"defaultHeight": 2
}
]
}
View File
Whitespace-only changes.
@@ -0,0 +1,51 @@
{
"id": "example-plugin",
"name": "Example Plugin",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "A minimal example plugin for NexaDash developers.",
"author": "NexaDash",
"category": "Developer",
"permissions": ["network:outbound"],
"settingsSchema": {
"type": "object",
"properties": {
"greeting": {
"type": "string",
"title": "Greeting",
"default": "Hello from Example Plugin"
}
}
},
"credentialsSchema": {
"type": "object",
"properties": {
"api_key": {
"type": "string",
"title": "API Key",
"format": "password"
}
}
},
"widgets": [
{
"id": "example-card",
"name": "Example Card",
"description": "Displays a greeting and current timestamp",
"defaultWidth": 2,
"defaultHeight": 2,
"settingsSchema": {
"type": "object",
"properties": {
"showTimestamp": {
"type": "boolean",
"title": "Show timestamp",
"default": true
}
}
}
}
],
"hasFrontend": true,
"apiRoutes": []
}
View File
Whitespace-only changes.
+67
View File
@@ -0,0 +1,67 @@
{
"id": "generic-http",
"name": "Generic HTTP",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "HTTP status checks, JSON API polling, custom headers and auth.",
"author": "NexaDash",
"category": "Generic",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"bearer_token": {
"type": "string",
"title": "Bearer Token",
"format": "password"
},
"api_key": {
"type": "string",
"title": "API Key"
}
}
},
"widgets": [
{
"id": "http-status",
"name": "HTTP Status",
"description": "Status code and latency check",
"defaultWidth": 2,
"defaultHeight": 1,
"settingsSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"title": "URL",
"format": "uri"
},
"method": {
"type": "string",
"title": "Method",
"enum": ["GET", "POST"],
"default": "GET"
},
"expected_status": {
"type": "integer",
"title": "Expected Status",
"default": 200
},
"headers": {
"type": "object",
"title": "Headers"
},
"json_path": {
"type": "string",
"title": "JSON Path"
},
"regex": {
"type": "string",
"title": "Regex"
}
},
"required": ["url"]
}
}
]
}
View File
Whitespace-only changes.
@@ -0,0 +1,71 @@
{
"id": "home-assistant",
"name": "Home Assistant",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "Entity status, sensors, automations and device overview.",
"author": "NexaDash",
"category": "Smart Home",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"long_lived_token": {
"type": "string",
"title": "Long-Lived Access Token",
"format": "password"
}
},
"required": ["long_lived_token"]
},
"widgets": [
{
"id": "entity-card",
"name": "Entity Card",
"description": "Display a single entity",
"defaultWidth": 1,
"defaultHeight": 1,
"settingsSchema": {
"type": "object",
"properties": {
"entity_id": {
"type": "string",
"title": "Entity ID"
}
},
"required": ["entity_id"]
}
},
{
"id": "sensor-chart",
"name": "Sensor Chart",
"description": "History chart for a sensor",
"defaultWidth": 3,
"defaultHeight": 2,
"settingsSchema": {
"type": "object",
"properties": {
"entity_id": {
"type": "string",
"title": "Entity ID"
}
},
"required": ["entity_id"]
}
},
{
"id": "home-status",
"name": "Home Status",
"description": "Overview of important entities",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "automation-status",
"name": "Automation Status",
"description": "Recent automation runs",
"defaultWidth": 2,
"defaultHeight": 2
}
]
}
View File
Whitespace-only changes.
+44
View File
@@ -0,0 +1,44 @@
{
"id": "jellyfin",
"name": "Jellyfin",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "Server status, active streams, users and library stats.",
"author": "NexaDash",
"category": "Media",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"api_key": {
"type": "string",
"title": "API Key",
"format": "password"
}
},
"required": ["api_key"]
},
"widgets": [
{
"id": "jellyfin-overview",
"name": "Jellyfin Overview",
"description": "Server info and user count",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "active-streams",
"name": "Active Streams",
"description": "Currently playing sessions",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "library-card",
"name": "Library Card",
"description": "Library statistics",
"defaultWidth": 2,
"defaultHeight": 2
}
]
}
Whitespace-only changes.
@@ -0,0 +1,51 @@
{
"id": "proxmox-backup-server",
"name": "Proxmox Backup Server",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "Monitor Proxmox Backup Server datastores, jobs and backups.",
"author": "NexaDash",
"category": "Infrastructure",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"api_token": {
"type": "string",
"title": "API Token",
"format": "password"
}
},
"required": ["api_token"]
},
"widgets": [
{
"id": "pbs-overview",
"name": "PBS Overview",
"description": "Server status and datastore summary",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "backup-job-status",
"name": "Backup Job Status",
"description": "Latest backup job results",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "datastore-usage",
"name": "Datastore Usage",
"description": "Storage usage per datastore",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "failed-backups",
"name": "Failed Backups",
"description": "Recent failed backup jobs",
"defaultWidth": 3,
"defaultHeight": 2
}
]
}
View File
Whitespace-only changes.
+79
View File
@@ -0,0 +1,79 @@
{
"id": "proxmox-ve",
"name": "Proxmox VE",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "Shows Proxmox nodes, VMs, LXCs, storage and cluster health.",
"author": "NexaDash",
"category": "Infrastructure",
"permissions": ["network:outbound", "secrets:read"],
"settingsSchema": {
"type": "object",
"properties": {},
"required": []
},
"credentialsSchema": {
"type": "object",
"properties": {
"api_token": {
"type": "string",
"title": "API Token",
"format": "password",
"description": "Proxmox API token in format user@realm!tokenid=uuid"
}
},
"required": ["api_token"]
},
"widgets": [
{
"id": "cluster-overview",
"name": "Cluster Overview",
"description": "Cluster status and nodes summary",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "node-card",
"name": "Node Card",
"description": "CPU/RAM/Disk for a single node",
"defaultWidth": 2,
"defaultHeight": 2,
"settingsSchema": {
"type": "object",
"properties": {
"node": {
"type": "string",
"title": "Node name"
}
},
"required": ["node"]
}
},
{
"id": "vm-lxc-list",
"name": "VM/LXC List",
"description": "List of virtual machines and containers",
"defaultWidth": 3,
"defaultHeight": 3
},
{
"id": "storage-usage",
"name": "Storage Usage",
"description": "Storage utilization across the cluster",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "resource-graph",
"name": "Resource Graph",
"description": "CPU and memory usage chart",
"defaultWidth": 3,
"defaultHeight": 2
}
],
"healthcheck": {
"method": "GET",
"intervalSeconds": 60,
"timeoutSeconds": 30
}
}
View File
Whitespace-only changes.
+44
View File
@@ -0,0 +1,44 @@
{
"id": "zoraxy",
"name": "Zoraxy",
"version": "1.0.0",
"nexadashPluginApi": "1.0",
"description": "Reverse proxy hosts, TLS status and backend health.",
"author": "NexaDash",
"category": "Network",
"permissions": ["network:outbound", "secrets:read"],
"credentialsSchema": {
"type": "object",
"properties": {
"api_key": {
"type": "string",
"title": "API Key",
"format": "password"
}
},
"required": ["api_key"]
},
"widgets": [
{
"id": "proxy-overview",
"name": "Proxy Overview",
"description": "List of proxy hosts",
"defaultWidth": 3,
"defaultHeight": 2
},
{
"id": "tls-expiry",
"name": "TLS Expiry",
"description": "TLS certificate expiration dates",
"defaultWidth": 2,
"defaultHeight": 2
},
{
"id": "backend-health",
"name": "Backend Health",
"description": "Upstream health checks",
"defaultWidth": 2,
"defaultHeight": 2
}
]
}