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:
1 parent
cfeeccbf53
commit
d694c8b8e3
197 files changed
+8583
-56
No files matched your search
Whitespace-only changes.
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
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": []
|
||||
}
|
||||
Whitespace-only changes.
@@ -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"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
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
|
||||
}
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
@@ -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
|
||||
}
|
||||
}
|
||||
Whitespace-only changes.
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user